Imagemagick exec and convert

3

我最近开始使用imagemagick和php进行开发,对这两个工具都比较新。所以,我在这里寻求一些帮助/建议。

第一

如果用户上传了gif或png格式的图片到我的网站上,并且我想把它转换为jpg格式,是否有像下面这样的命令:$image->convert($file,'.jpg) ,或者只能通过exec()来访问convert命令?例如:exec(convert picture.png 转换成 picture.jpg)

第二

如果用户再次上传gif/png格式的图像到网站上,并且我将图像调整为指定的宽度/高度并写入图像,可以使用IM的writeImage函数,如下所示:$image->writeImage(basename.$ext),其中$ext = jpg。这样做会有效吗?这是一个好习惯吗?我认为这只是将其重命名而已,但我没看出存在问题... o.O

抱歉还有一个问题,我对exec()不太熟悉,使用imagemagick时使用exec()更好吗?它会提高速度、负载等方面的性能吗?


exec()是一个易受攻击的PHP函数,因此您会发现它在大多数服务器上都被禁用了。 - Salman A
2
我在“大多数服务器”上没有看到它被禁用。就像任何事情一样,您需要小心处理用户输入。 - Bonzo
2个回答

4

我无法直接回答你的问题,但我可以给你指几个资源:

关于哪个更好 - exec还是PHP扩展,我几个月前问过同样的问题:

我应该使用ImageMagick的PHP扩展还是只使用PHP的Exec()函数来运行终端命令?

对于所有的Image Magick PHP功能,你应该查阅官方指南:

http://www.php.net/manual/en/book.imagick.php

我从Image Magick转到了Graphics Magick,因为我听说它的性能更好。它是Image Magick的一个分支,强调性能。像Flickr和Etsy这样的大型网站使用它:

http://www.graphicsmagick.org/

这篇指南帮助我入门:

http://devzone.zend.com/1559/manipulating-images-with-php-and-graphicsmagick/

他们在php.net上有他们自己的手册:

http://php.net/manual/en/book.gmagick.php (大多数命令与Image Magick的相同)


1

我更喜欢使用exec(),因为它比Imagick更受支持(您发布的示例代码),更易于使用,并支持所有运算符(取决于您的版本),而Imagick则不支持。

在不同版本中,一些Imagick代码的工作方式不同;与几年前我开始研究它时相比,现在有更多的Imagick示例。

尽管有些人安装Imagick时遇到麻烦,但说Imagick可能会更快并且可以内置到php中。

我相信这个网站http://valokuva.org/?cat=1属于一个Imagick开发者,并且有很多示例。

我的网站www.rubblewebs.co.uk/imagemagick有很多使用exec()的php示例。

至于您的另外两个问题,是的,您可以使用Imagick更改文件类型,至于basename.$ext - 为什么不试试呢?只要basename没有扩展名,它可能有效,但您可能需要将basename.$ext放在引号中。

关于速度,有时候GD更快,有时候Imagick或Imagemagick更快。您可以进行一些测试。我大约一年前做了一些测试,您可以在您的服务器上尝试这段代码。http://www.rubblewebs.co.uk/imagemagick/speed/Speed_tests_1.pdf


你好Bonzo。感谢您的回复,我很感激。谢谢您提供的链接。我想我在做关于IM的研究时曾经访问过您的网站。无论如何,关于文件类型更改,您提出了什么替代方案?setimagetype?还是其他等效的方案? - inrob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接