【问题标题】:Putting multiple images together into one将多张图像合二为一
【发布时间】:2016-09-20 08:12:51
【问题描述】:

我在一个文件夹中整理了一堆照片,因此总是有一张A 类型的照片和一张B 类型的照片紧随其后。

不幸的是,其中一些需要旋转,我使用标准 Windows 文件资源管理器进行了旋转。

我需要将每对照片 A 和 B 组合成新的单张照片,以便第一张源照片显示在第二张照片上方。两张照片的宽度相同。

代码如下:

    File first = ...;
    File second = ...;

    BufferedImage A = ImageIO.read(first);
    BufferedImage B = ImageIO.read(second);

    int resultHeight = A.getHeight() + B.getHeight();
    int resultWidth = A.getWidth();
    BufferedImage combined = new BufferedImage(resultWidth, resultHeight, BufferedImage.TYPE_INT_ARGB);


    Graphics g = combined.getGraphics();
    g.drawImage(A, 0, 0, null);
    g.drawImage(B, 0, A.getHeight(), null);
    g.dispose();

    ImageIO.write(combined, "PNG", new File(destDirectory, destName));

不幸的是,虽然所有图片在使用Windows app 查看时似乎都具有相同的方向,但它们在结果照片中的旋转方式不同。我知道BufferedImage. 似乎忽略了某种标志

如何检测该标志并最终在组合之前根据需要旋转照片?谢谢!

【问题讨论】:

    标签: java image graphics


    【解决方案1】:

    我建议使用MetadataExtractor 来获取图像的方向。见this question

    【讨论】:

    • 如果你提取旋转,你可以使用this answer来旋转图像。
    • 谢谢!我使用了那个库,它看起来很有希望。
    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 2016-03-31
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多