我正在开发一个照片应用程序,我需要一些建议,我应该如何使用 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 中;)
- 我们可以限制只讨论水平图像,我可以弄清楚垂直操作
任何意见将不胜感激。