2016-05-23 167 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

謝謝!我使用了這個庫,看起來很有希望。 –