Php Imagemagick调整大小控制质量和扩展

Php Imagemagick调整大小控制质量和扩展,php,resize,imagemagick,image-resizing,Php,Resize,Imagemagick,Image Resizing,我正在努力学习Imagemagick,php.net文档非常糟糕,我似乎找不到任何问题的答案。我想让人们上传图像,然后调整它们的大小,并丢失EXIF数据 这是我目前拥有的 $thumbnail = new Imagick("http://4.bp.blogspot.com/-hsypkqxCH6g/UGHEHIH43sI/AAAAAAAADGE/0JBu9izewQs/s1600/luna-llena1.jpg"); $thumbnail->thumbnailImage( 100, 100

我正在努力学习Imagemagick,php.net文档非常糟糕,我似乎找不到任何问题的答案。我想让人们上传图像,然后调整它们的大小,并丢失EXIF数据

这是我目前拥有的

$thumbnail = new Imagick("http://4.bp.blogspot.com/-hsypkqxCH6g/UGHEHIH43sI/AAAAAAAADGE/0JBu9izewQs/s1600/luna-llena1.jpg");
$thumbnail->thumbnailImage( 100, 100, true );
$thumbnail->writeImage( "avatar/thumbnail.jpg" ); 

现在,如何控制要保存为的图像文件?假设用户提交了一张gif/png/jpg,那么我该如何拍摄该图像,然后将其保存为相同的输入格式,或者将其全部更改为.png?

我同意,PHP.net文档没有多大帮助。我发现最简单的方法是找到如何使用命令进行操作,然后将命令与PHP方法相匹配。我回复有点晚,所以你现在可能已经明白了,但如果不是,或者为了其他人的利益:

如果要在保存前更改图像格式,请在
writeImage
行之前添加以下内容:

$thumbnail->setImageFormat('png');
然后将writeImage行中的扩展名更改为匹配,例如
缩略图.png

要更改质量,请编写:

$thumbnail->setImageCompressionQuality(40); // Adjust the number 40
在某些情况下,您可能还希望通过以下方式设置压缩类型:

$thumbnail->setImageCompression(Imagick::COMPRESSION_JPEG);
您可以在此处找到压缩常数:


注意:这些只是示例。这种压缩实际上不适用于png文件。

此IMO为imagick缩略图生成最佳结果

加载图片

$img = new imagick( $_FILES['Picture']['tmp_name'] ); 
$img->trimImage(0);
把图片上多余的部分剪掉

$img = new imagick( $_FILES['Picture']['tmp_name'] ); 
$img->trimImage(0);
创建缩略图,在本例中,我使用“cropThumbnailImage”

$img->cropThumbnailImage( 180, 180 );
设置格式,使所有图片现在都可以使用相同的标准格式

$img->setImageFormat( 'jpeg' );
将图像压缩设置为jpg的压缩

$img->setImageCompression(Imagick::COMPRESSION_JPEG); 
将质量设置为100

$img->setImageCompressionQuality(100); 
结果的缩略图在我看来有点模糊,所以我添加了一个轻微的锐化效果,使其“更清晰”。玩这些设置,但我喜欢

$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05);