2012-05-12 53 views
3

我最近開始使用imagemagick與php和 我對這兩個,IM和PHP相對較新。 所以,我在這裏要求一些幫助/建議。Imagemagick執行並轉換

首先

如果讓我們說用戶上傳的GIF或 我的網站PNG圖像,我希望它轉換爲JPG格式,有例如像任何 命令。 $image->convert($file,'.jpg) 或者轉換命令只能通過exec()訪問? 像例如exec(convert picture.png到picture.jpg)

如果再次,用戶上傳GIF/PNG站點 上和我的圖像尺寸調整到規定的寬度/高度和 寫入圖像,像這樣的IM的writeImage函數: $image->writeImage(basename.$ext)其中$ext = jpg。 這會正常工作,這是一個很好的做法嗎?我認爲這會 只能重命名,但,我仍然沒有看到這是一個問題...... OO

噢,對不起一個問題,我不是很熟悉的高管, 豈不是更好使用ImageMagick使用exec(),它是否改善 速度,負載等?

+0

'exec()'是一個[可利用的PHP函數](http://stackoverflow.com/questions/3115559/exploitable-php-functions)因此,你會發現它在大多數服務器上被禁用。 –

+2

我沒有看到它在「大多數服務器」上被禁用。與所有你需要小心的用戶輸入一樣。 – Bonzo

回答

4

我不能直接回答你的問題,但認爲我點你幾個資源:

至於哪個更好,EXEC或PHP擴展,我在幾個月前問同樣的問題:

Should I use a PHP extension for ImageMagick or just use PHP's Exec() function to run the terminal commands?

對於所有難懂的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可以更快,是/可以嗎?內置到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

+0

Hello Bonzo。謝謝您的回覆。我很感激。感謝您提供的 鏈接。我想我以前訪問過你的網站,當時我對 進行了一些關於IM的研究。無論如何關於文件類型的變化,你提出了什麼替代方案? setimagetype?或者一些相當於 的? – inrob

+0

我沒有想過出生,你的方法應該可以工作。 – Bonzo