首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Imagemagick调整大小控制质量和扩展

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

Stack Overflow用户
提问于 2013-04-24 05:35:23
回答 2查看 3K关注 0票数 0

我正在努力学习Imagemagick,php.net文档是可怕的T_T,我似乎找不到任何关于我的问题的答案。我想让人们上传图像,然后调整他们的大小和丢失EXIF数据。

这是我目前所拥有的。

代码语言:javascript
复制
$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?

EN

回答 2

Stack Overflow用户

发布于 2013-09-27 03:41:15

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

加载图片

代码语言:javascript
复制
$img = new imagick( $_FILES['Picture']['tmp_name'] ); 

修剪掉图片上多余的部分。

代码语言:javascript
复制
$img->trimImage(0);

创建缩略图,在本例中,我使用'cropThumbnailImage‘

代码语言:javascript
复制
$img->cropThumbnailImage( 180, 180 );

设置格式,这样所有的图片现在都可以是相同的标准格式

代码语言:javascript
复制
$img->setImageFormat( 'jpeg' );

将图像压缩设置为jpg格式

代码语言:javascript
复制
$img->setImageCompression(Imagick::COMPRESSION_JPEG); 

将质量设置为100

代码语言:javascript
复制
$img->setImageCompressionQuality(100); 

由此产生的缩略图有点模糊,所以我添加了一个轻微的锐化效果,使它变得更“锐化”。。使用这些设置,但我喜欢..

代码语言:javascript
复制
$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05); 
票数 1
EN

Stack Overflow用户

发布于 2013-04-25 17:50:06

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

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

代码语言:javascript
复制
$thumbnail->setImageFormat('png');

然后更改writeImage行中的扩展名以匹配,例如thumbnail.png

要更改质量,请编写:

代码语言:javascript
复制
$thumbnail->setImageCompressionQuality(40); // Adjust the number 40

在某些情况下,您可能还希望通过编写以下代码来设置压缩类型:

代码语言:javascript
复制
$thumbnail->setImageCompression(Imagick::COMPRESSION_JPEG);

您可以在此处找到压缩常量:http://www.php.net/manual/en/imagick.constants.php

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16179594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档