Imagemagick的内联作物和规模作业可以合并吗?

时间:2016-06-10 08:33:48

标签: imagemagick

如上所述on the Imagemagick site,"内嵌图像裁剪"是这样的:

convert '*.jpg[120x120+10+5]' thumbnail%03d.png

此外,there is内联比例操作,如下所示:

pattern:bricks[200%]

这两项操作可以合并吗?

我试过了

montage -tile 2x1 A.png B.png[200%50x50+10+10] out.png

montage -tile 2x1 A.png B.png[200%][50x50+10+10] out.png

,但这些都不起作用。

2 个答案:

答案 0 :(得分:1)

不确定您的问题是关于裁剪还是缩放或蒙太奇,但如果您的意思是想要加载两个图像并单独裁剪/缩放然后剪辑它们,您可以这样做:

convert \
   \( image1.jpg -crop ... -scale ... \) \
   \( image2.jpg -crop ... -scale ... \) \
   +append result.jpg

答案 1 :(得分:0)

  

这两项操作可以合并吗?

没有。至少不是你正在尝试的内联快捷技术。

最好将命令扩展为

convert *.jpg -crop 120x120+10+5 -scale 200% thumbnail%03d.png

我相信IM会将内联解析为image_info->extract结构上的单个几何体。如果您尝试混合多个几何字符串,GeometryInfo将具有冲突的数据值。

要进行测试,请参阅以下示例应用程序。

// test_geometry.c
#include <stdio.h>
#include <magick/MagickCore.h>

int main(int argc, const char * argv[]) {
    // Set-up
    MagickStatusType flags = 0;
    GeometryInfo geometry_info = {0.0, 0.0, 0.0, 0.0, 0.0};
    // Parse first argument
    flags = ParseGeometry(argv[1], &geometry_info);
    // Dump what was parsed (this code was copied from magick/geomerty.c)
    printf("ParseGeometry...\n");
    printf("Flags: %c %c %s %s %s\n",
           (flags & RhoValue) ? 'W' : ' ',(flags & SigmaValue) ? 'H' : ' ',
           (flags & XiValue) ? ((flags & XiNegative) ? "-X" : "+X") : "  ",
           (flags & PsiValue) ? ((flags & PsiNegative) ? "-Y" : "+Y") : "  ",
           (flags & ChiValue) ? ((flags & ChiNegative) ? "-Z" : "+Z") : "  ");
    printf("Geometry: %lg,%lg,%lg,%lg,%lg\n",geometry_info.rho,
           geometry_info.sigma,geometry_info.xi,geometry_info.psi,
           geometry_info.chi);
    return 0;
}

使用

编译上述内容
clang -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/local/include/ImageMagick-6 \
      -L/usr/local/lib -lMagickCore-6.Q16 \
      test_geometry.c -o test_geometry

如果我们运行以下测试用例120x120+10+5

./test_geometry 120x120+10+5
ParseGeometry...
Flags: W H +X +Y   
Geometry: 120,120,10,5,0

按预期工作,那么200%呢?

./test_geometry 200%
ParseGeometry...
Flags: W   
Geometry: 200,200,0,0,0

也是我们所期望的。但是200%50x50+10+10呢?

./test_geometry 120x120+10+5
ParseGeometry...
Flags: W H +X +Y   
Geometry: 20050,50,10,10,0

糟糕!我不相信预计会有20,050的宽度。