如上所述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
,但这些都不起作用。
答案 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的宽度。