首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GraphicsMagick作物:显示什么将被裁剪

GraphicsMagick作物:显示什么将被裁剪
EN

Stack Overflow用户
提问于 2013-11-15 15:09:13
回答 1查看 1.5K关注 0票数 1

我正在开发一个照片应用程序,我需要一些建议,如何用Graphics/ImageMagick来解决下面的问题。

  1. 提供一张具有分辨率的照片: 2048x1536
  2. 给定特定决议: 1864x1228
  3. 调整图像的大小并用图像填充指定的分辨率(现在是1864x1398)
  4. 突出显示原始图像的区域将被裁剪(至1864x1228)

我有一个正确调整图像大小和调整图像的工作解决方案:

代码语言:javascript
代码运行次数:0
运行
复制
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映像视图来实现这一点,但它似乎也不是最优的。

备注:

  • 我用的是通用汽车的im4java。我也接受一个命令行解决方案(我将找出它并在im4java中发布;)
  • 我们只可以限制关于水平图像的对话,我可以计算出垂直操作。

如有任何意见,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 13:13:49

oneliner imagemagick转换(删除换行符):

代码语言:javascript
代码运行次数:0
运行
复制
    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中解决了这个问题:

代码语言:javascript
代码运行次数:0
运行
复制
    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

备注:

  • 它仍然不包含红色边框(我不能只将边框添加到第二个图像中)。
  • 我决定使用“淡入白色”效果,而不是玩阿尔法频道。

示例:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20004164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档