I\'m designing a website and I need to:
My personal favorite Image Manipulation Library is WideImage. It makes is ridiculously easy to do that kind of task.
WideImage::load('pic.png')
->crop('center', 'center', 90, 50)->saveToFile('cropped/pic.jpg');
As for validating if it is actually an image or not, use finfo or PEAR::Mime_type. I personally prefer PEAR::Mime_Type. It uses finfo
but it's just simpler to use.
Using finfo
:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
$isImage = (preg_match('#^image/#', $mimetype) === 1);
Using PEAR::Mime_Type
:
$mimetype = MIME_Type::autoDetect($filename);
$isImage = MIME_Type::wildcardMatch('image/*', $mimetype);
I am using this Image crop, it working well
Simple PHP Image cCrop
there's also this lightweight image manipulation library written in PHP called Zebra_Image that's very small, not bloated with zillion of functions you'll never use, highly optimized, with a great documentation and which is actively maintained.
I recommend to use Smart Image Resizer http://shiftingpixel.com/2008/03/03/smart-image-resizer/
You get the best image quality after resizing
It's extremely simple to use. It uses image cache.
If you're willing to migrate into an MVC PHP framework, I strongly recommend Codeigniter.
Besides several other classes and libraries that handle pagination, tables, security, forms, etc CI also has nice upload and image manipulation classes that are very handy and flexible. I believe they can do all you require (just not sure about jpg conversion).
You can check them out at:
Image manipulation class
File uploading class
I tend to use a framework of one description or another, which cover's the file upload part. However, do have a recommendation for the cropping bit:
Imagine - https://github.com/avalanche123/Imagine
And if you want to make the uploader a tiny bit better than just an input type=file, try:
https://github.com/valums/file-uploader