2016-05-23 128 views
1

我在一个文件夹中排序了一堆照片,以便在此之后紧接着总是有一张类型为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

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

+0

如果你提取的旋转,你可以使用[这个答案](http://stackoverflow.com/questions/9749121/java-image-rotation-with-affinetransform-outputs-black-image-but-works-well- whe)旋转图像。 – fhofmann

+0

谢谢!我使用了这个库,看起来很有希望。 –

相关问题