Imagemagick叠加图像调整复合

时间:2014-05-13 17:57:54

标签: imagemagick composite

我使用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");

1 个答案:

答案 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);