0

我正在尝试学习 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?

4

2 回答 2

1

This IMO produces the best results for imagick thumbnails;

Load the picture

$img = new imagick( $_FILES['Picture']['tmp_name'] ); 

Trim an excess off the picture

$img->trimImage(0);

Create the thumbnail, in this case, I'm using 'cropThumbnailImage'

$img->cropThumbnailImage( 180, 180 );

Set the format so all pics can now be the same standard format

$img->setImageFormat( 'jpeg' );

Set the Image compression to that of a jpg

$img->setImageCompression(Imagick::COMPRESSION_JPEG); 

Set the quality to be 100

$img->setImageCompressionQuality(100); 

The resulting thumbnail is then a little bit blury IMO, so I add a slight sharpening effect to make it 'sharper'. . play around with these settings, but I like..

$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05); 
于 2013-09-26T19:41:14.957 回答
0

我同意,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 文件。

于 2013-04-25T09:50:06.307 回答