我正在努力学习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?
发布于 2013-09-27 03:41:15
此IMO为imagick缩略图产生最佳结果;
加载图片
$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); 发布于 2013-04-25 17:50:06
我同意,PHP.net文档不是很有帮助。我发现最简单的方法是找到如何使用命令,然后将命令与PHP方法相匹配。我的回复有点晚了,所以你现在可能已经弄明白了,但如果没有,或者为了其他人的利益:
如果要在保存前更改图像格式,请在writeImage行之前添加以下内容:
$thumbnail->setImageFormat('png');然后更改writeImage行中的扩展名以匹配,例如thumbnail.png
要更改质量,请编写:
$thumbnail->setImageCompressionQuality(40); // Adjust the number 40在某些情况下,您可能还希望通过编写以下代码来设置压缩类型:
$thumbnail->setImageCompression(Imagick::COMPRESSION_JPEG);您可以在此处找到压缩常量:http://www.php.net/manual/en/imagick.constants.php
注意:这些只是示例。这种压缩实际上不适用于png文件。
https://stackoverflow.com/questions/16179594
复制相似问题