我使用imagemagick通过混合选项将一个图像叠加到另一个图像上。但是,叠加可以比背景图像更大或更小。我想动态调整叠加图像的大小,使其与背景匹配,然后将它们合并在一起。我提前了解背景图片的尺寸。我有以下工作。
exec("convert $img_in test_images/leak_1.jpg -compose softlight -gravity center -composite $img_out");
我想做这样的事情:
exec("convert $img_in (test_images/leak_1.jpg -resize {$w}x{$h} -compose softlight -gravity center -composite $img_out");
答案 0 :(得分:2)
作为子流程调整大小。使用区域标记(^
),或根据需要忽略宽高比(!
)(see examples)
$dim = "{$w}x{$h}^";
$job = "convert \( $img_in -resize {$dim} \) test_images/leak_1.jpg "
. " -compose softlight -gravity center -composite $img_out";
$ok = exec($job);
虽然已知背景图像,但在运行时收集维度并构建错误处理可能是明智之举。
$dim = exec("convert -ping -format '%wx%h^' test_images/leak_1.jpg info:-");
// Do error handle for overlay
$job = "convert \( $img_in -resize {$dim} \) test_images/leak_1.jpg "
. " -compose softlight -gravity center -composite $img_out";
$ok = exec($job);