我正在开发一个照片应用程序,我需要一些建议,如何用Graphics/ImageMagick来解决下面的问题。
我有一个正确调整图像大小和调整图像的工作解决方案:
IMOperation resizeOp = new IMOperation();
resizeOp.addImage();
resizeOp.resize(MAX_WIDTH, MAX_HEIGHT, "^");
resizeOp.gravity("center"); //centered image with crop the top/bottom parts
resizeOp.crop(MAX_WIDTH, MAX_HEIGHT, 0, 0);
resizeOp.addImage();
ConvertCmd cmd = new ConvertCmd(true);
cmd.run(resizeOp, fileName, outputFileName); //cropped, center filled image (1864x1228)
问题是如何做以下工作:显示完整的图像而不是裁剪的版本,并突出显示图像的区域将被裁剪。我更喜欢在裁剪图像周围加上红色边框,然后用α层的裁剪部分显示。
我有一个我不太喜欢的想法:用alpha层从原始图像中生成一个图像,然后用红色边框将裁剪的图像放在上面。它似乎不是最优的解决方案:)我的另一个想法是使用javafx映像视图来实现这一点,但它似乎也不是最优的。
备注:
如有任何意见,将不胜感激。
发布于 2013-11-21 05:13:49
oneliner imagemagick转换(删除换行符):
convert ( in.jpg -resize 1864x1228^ -fill white -colorize 50% )
( in.jpg -resize 1864x1228^ -gravity center -crop 1864x1228+0+0 )
-gravity center -composite out.jpg
在bash中,您必须用\
__来转义\
字符!
我用子操作在im4java中解决了这个问题:
IMOperation op = new IMOperation();
op.openOperation();
op.addImage(); //input image
op.resize(MAX_WIDTH, MAX_HEIGHT, "^");
op.fill("white");
op.colorize(50);
op.closeOperation();
op.openOperation();
op.addImage(); //input image
op.resize(MAX_WIDTH, MAX_HEIGHT, "^");
op.gravity(GRAVITY_OPT_CENTER); //centered image with crop the top/bottom parts
op.crop(MAX_WIDTH, MAX_HEIGHT, 0, 0);
op.closeOperation();
op.gravity(GRAVITY_OPT_CENTER);
op.composite();
op.addImage(); // output image
备注:
示例:
https://stackoverflow.com/questions/20004164
复制相似问题