【问题标题】:Overlaying two images with automatic resize using ImageMagick使用 ImageMagick 自动调整大小覆盖两个图像
【发布时间】:2011-06-15 16:29:48
【问题描述】:

在使用 ImageMagick 叠加图像时,有没有办法根据背景大小自动调整叠加图像的大小?我现在使用以下代码:

复合叠加层.jpeg 背景.jpeg 结果.jpeg

问题是有时叠加层和背景的大小不同,我想相应地调整叠加层的大小(保持纵横比)并将其放置在中心。有什么办法吗?

【问题讨论】:

    标签: image-processing image-manipulation imagemagick


    【解决方案1】:

    首先,叠加层和背景不需要相同大小才能使合成起作用。例如,给定这两张图片:

    sydney.png (352x288):

    jet2.png (128x129):

    尝试以下命令:

    convert -size 352x288 -composite sydney.png jet2.png -geometry 64x64+176+144 -depth 8 test.png
    
    convert -size 352x288 -composite sydney.png jet2.png -geometry 32x32+176+144 -depth 8 test.png
    
    • -size 指定输出图像尺寸
    • -geometry 指定前景的尺寸和位置

    这是我第一个命令得到的:

    编辑

    这是一个 bash 脚本,可以在一行中为您完成所有操作:

    #!/bin/bash
    if [ -z "$3" ]
    then
        echo "usage: $0 background.png foreground.png output.png"
        exit 1
    fi
    bg_size=`identify -format '%wx%h' "$1"`
    convert -size $bg_size -composite "$1" "$2" -geometry $bg_size+0+0 -depth 8 "$3"
    

    【讨论】:

    • 所以为-size-geometry 开关指定相同的大小。例如:convert -size 352x288 -composite sydney.png jet2.png -geometry 352x288+0+0 -depth 8 test.png 将拉伸飞机以适应图像窗口。
    • 嗯 - 这可以工作,但我事先不知道图像的大小,所以如果它可以自动拉伸或其他什么会很好。
    • 您可以使用以下 bash 命令找到图像的大小:size=identify -format '%wx%h' filename.png`,然后将其用于 bash 脚本。不幸的是,Imagemagick 似乎没有-autostretchorwhatever 开关。
    • 好的,这就是我刚刚所做的 - 效果很好,非常感谢!
    • 不客气。无论如何,我继续为您写了一个脚本 - 请参阅我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多