我认为在 Imagick 中运行是很复杂的——并不是说它不可能——如上所述,最好的选择是 Imagemagick 命令行和 exec()。一次构建一个命令;您可以稍后组合命令。不要将 jpg 用于任何中间图像,因为您将开始降低质量。
这取决于您所追求的效果,因为 Anthony 有一个 Bash 脚本,您可以使用链接到页面该部分的底部。
您可以使用 exec 使用 php 运行它:将脚本上传到您的服务器 CHMOD 它到 755 或 777,具体取决于您的服务器设置
// Run the script
exec("/FULL PATH TO JIGSAW/jigsaw options input.jpg mask.png output.png 2>&1", $array);
//Display any errors
echo "<br>".print_r($array)."<br></pre>";
我不知道这是否适用于 Hostgator 帐户,但我不明白为什么不这样做。
我也没有尝试过,你需要一个蒙版图像来配合你的输入图像。
我刚刚在我的服务器上尝试过这个并得到一个错误:/bin/bash^M: bad interpreter: No such file or directory 这对我来说没有任何意义!
使用 Anthony 的图像和带有 Imagemagick 命令行和 exec() 的代码制作拼图
exec("convert jigsaw_tmpl.png -edge .5 -blur 0x.5 jigsaw_edge.png");
$cmd = " holocaust_md.jpg \( jigsaw_edge.png -negate \) -geometry +365+96 ".
" -compose multiply -composite -crop 100x100+365+96 +repage ";
exec("convert $cmd jigsaw_outline.png");
$cmd = " holocaust_md.jpg -crop 100x100+365+96! -background none -flatten ".
" +repage \( jigsaw_tmpl.png +matte \) -compose CopyOpacity -composite ".
" -rotate -20 -gravity center -crop 100x100+0+0 +repage ";
exec("convert $cmd jigsaw_cutout.png");
$cmd = " jigsaw_cutout.png \( +clone -channel A -separate +channel -negate ".
" -background black -virtual-pixel background -blur 0x2 -shade 120x21.78 ".
" -contrast-stretch 0% +sigmoidal-contrast 7x50% -fill grey50 -colorize 10% ".
" +clone +swap -compose overlay -composite \) -compose In -composite ";
exec("convert $cmd jigsaw_bevel.png");
$cmd = " jigsaw_bevel.png \( +clone -fill DarkSlateGrey -colorize 100% -repage +0+1 \) ".
" \( +clone -repage +1+2 \) \( +clone -repage +1+3 \) \( +clone -repage +2+4 \) ".
" \( +clone -repage +2+5 \) -background none -compose DstOver -flatten";
exec("convert $cmd jigsaw_thickness.png");
$cmd = " jigsaw_thickness.png \( +clone -background Black -shadow 50x3+4+4 \) ".
" -background none -compose DstOver -flatten";
exec("convert $cmd jigsaw_shadow.png");