工作,我有一個簡單的轉換的imagemagicks命令行,我想用PHP的Imagick類模仿:PHP Imagick的fxImage並不
convert \("image1.jpg" \) \
\(-size 1x256 gradient:white-black \
-rotate 90 \
-fx "floor(u*10+0.5)/10" \
\) \
"temp1.jpg"`
那行輸出2個圖像:temp1-0.jpg
這只是一個image1.jpg
副本和temp1-1.jpg
這是這一個: 正如你可以看到它是一個簡單的漸變圖像,使漸變不平滑的效果。這與命令行imagemagick完美配合。
儘管當我嘗試用PHP來模仿該行時,它會完成所有操作,但-fx
部分仍然正確。代碼如下:
$canvas = new Imagick();
$canvas->newImage(1, 256, "white", "jpg");
$gradient = new Imagick();
$gradient->newPseudoImage(1, 256, "gradient:white-black");
$canvas->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);
$canvas->rotateImage(new ImagickPixel(), 90);
$canvas->fxImage("floor(s*10+0.5)/10");
header("Content-Type: image/jpg");
echo $canvas;
就像我說的,它不會重現fx
一部分,而是一個正常的白色到黑色的漸變。
我是Imagemagick的新手,但我嘗試過使用該功能應用更簡單的效果u+10
,但仍不會看到效果。 我錯過了什麼讓fxImage()
正常工作? 是否有這樣的效果的解決方法?
我還沒有使用imagick的特定函數,但我想指出,如果你真的找不到任何方法通過PHP imagick擴展來完成它,你可以調用你在PHP中使用的命令行版本,使用exec。 http://us3.php.net/function.exec – Kai
哦,忘了說我正在一個不允許使用exec()的轉售服務器上工作,因此是Imagick類。 – Thomas