将多个图像合二为一

时间:2016-05-23 12:32:17

标签: java image graphics

我在一个文件夹中排列了大量照片,以便在此之后总是有一张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.

似乎忽略了某种旗帜

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

1 个答案:

答案 0 :(得分:1)

我建议使用MetadataExtractor来获取图片的方向。请参阅this question