我正在尝试学习Imagemagick,php.net文档是可怕的T_T,我似乎无法找到任何问题的答案。我想让人们上传图片然后调整大小并丢失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?
答案 0 :(得分:1)
此IMO为想象缩略图产生最佳效果;
加载图片
$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);
由此产生的缩略图有点blury IMO,所以我添加一个轻微的锐化效果,使其“更清晰”。 。玩这些设置,但我喜欢..
$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05);
答案 1 :(得分:0)
我同意,PHP.net文档不是很有帮助。我发现最容易找到如何使用命令执行操作,然后将命令与PHP方法匹配。我迟到了,所以你现在可能已经知道了,但如果没有,或为了其他任何人的利益:
如果您想在保存之前更改图片格式,请在writeImage
行之前添加:
$thumbnail->setImageFormat('png');
然后更改writeImage行中的扩展名以匹配,例如thumbnail.png
要改变质量,请写下:
$thumbnail->setImageCompressionQuality(40); // Adjust the number 40
在某些情况下,您可能还想通过编写以下来设置压缩类型:
$thumbnail->setImageCompression(Imagick::COMPRESSION_JPEG);
您可以在此处找到COMPRESSION常量:http://www.php.net/manual/en/imagick.constants.php
注意:这些只是示例。这种压缩实际上不适用于png文件。