Best PHP Image Crop Class

2020-05-13 20:30发布

问题:

I'm designing a website and I need to:

  • Upload the image
  • Validate that it's an image (and not, oh I don't know.... a virus :) )
  • Resize the Image
  • convert to jpg

Essentially basic image upload

Instead of writing my own I'm trying to find a php class that let's me do all this, because as Jeff Atwood said, "never design what you can steal"

Now before you go ahead and downvote because I didn't do my research, I did:

Googling this brings up a huge amount of results, which is the problem, I don't know which results are useful and which are trash!

So far, Ive found:

  • https://stackoverflow.com/questions/4997127/php-class-to-upload-image-from-url-and-resize-it (I know it looks like a duplicate, but its not because it is asking for a URL fetcher)
  • http://net.tutsplus.com/tutorials/php/image-resizing-made-easy-with-php/
  • http://www.verot.net/php_class_upload.htm
  • http://blog.freelancer-id.com/index.php/2010/03/21/php-image-crop-resize-upload
  • http://www.phpclasses.org/package/2181-PHP-Process-files-and-images-uploaded-via-a-form.html
  • http://www.digitalgemstones.com/code/tools/ImgUploader.php

Does anyone have any experience with these classes? Can you recommend an outstanding image upload class?

回答1:

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



回答2:

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);


回答3:

Check out JCROP Plugin

This will be uselful for all

JCROP Image cropping----deepliquid.com/content/Jcrop.html



回答4:

The class upload from Colin Verot http://www.verot.net/php_class_upload.htm is my favourite. I use in in all my projects. Like the way you 'talk' to the class and only use what your need, but gives plenty of configuration/methods to tweak it to your exact needs. Great class!



回答5:

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.



回答6:

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.



回答7:

I recommend SimpleImage, it is very simple, has only one file and is updated.

Example of use:

$img = new SimpleImage('image.jpg');

// Resize the image to 320x200
$img->resize(320, 200);

$img->save('new-image.jpg');


回答8:

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



回答9:

I am using this Image crop, it working well

Simple PHP Image cCrop