【发布时间】:2013-11-15 15:09:13
【问题描述】:
我正在开发一个照片应用程序,我需要一些建议,我应该如何使用 Graphics/ImageMagick 解决以下问题。
- 给定一张分辨率为:2048x1536 的照片
- 给定一个指定的分辨率:1864x1228
- 调整图像大小并用图像填充指定的分辨率(现在是 1864x1398)
- 突出显示原始图像的区域将被裁剪(至 1864x1228)
我有一个可行的解决方案,可以正确调整图像大小和裁剪图像:
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 层的裁剪部分显示。
我有一个我不太喜欢的想法:从原始图像生成一个带有 alpha 层的图像,并将裁剪后的图像放在上面,并带有红色边框。这似乎不是最佳解决方案 :) 我的另一个想法是使用 javafx imageviews 执行此操作,但它似乎也不是最佳解决方案。
注意事项:
- 我正在使用带有 GM 的 im4java。我也接受命令行解决方案(我会弄清楚并将其发布在 im4java 中;)
- 我们可以限制只讨论水平图像,我可以弄清楚垂直操作
任何 cmets 将不胜感激。
【问题讨论】:
标签: imagemagick javafx-2 image-manipulation graphicsmagick im4java