2016-12-21 75 views
0

我想使用Thumbnailator庫旋轉圖像。我使用的代碼如下所示。它旋轉圖像或成功翻轉圖像,但顏色質量完全損壞。還顯示輸入和輸出圖像。Thumbnailator圖像旋轉混淆圖像

package com.abk; 

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Iterator; 

import javax.imageio.ImageIO; 
import javax.imageio.ImageReader; 
import javax.imageio.stream.ImageInputStream; 

import net.coobird.thumbnailator.Thumbnails; 
import net.coobird.thumbnailator.filters.Flip; 
import net.coobird.thumbnailator.filters.Rotation; 
import net.coobird.thumbnailator.util.exif.ExifUtils; 
import net.coobird.thumbnailator.util.exif.Orientation; 

public class ImageAutoRotate { 
    public static void main(String[] args) { 
     try { 
      BufferedImage img = ImageIO.read(new File("314.jpg")); 
      BufferedImage newImg = Rotation.RIGHT_90_DEGREES.apply(img); 
      BufferedImage flipImg = Flip.HORIZONTAL.apply(img); 

      File outputfile = new File("314_2.jpg"); 
      ImageIO.write(newImg, "jpg", outputfile); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

輸入圖像 enter image description here 輸出圖像 Output Image

+0

結果顯示貌似正確的YCbCr解釋爲RGB。 – haraldK

+0

圖像是RGB本身...有沒有辦法強制它將圖像解釋爲RGB –

+0

原始圖像存儲爲YCbCr(大多數JPEG),但解碼器會將其轉換爲RGB。輸出可能是RGBA(4通道),然後再寫入,但由於JPEG包含帶有「未知」轉換的Adobe標記,圖像被解釋爲CMYK(!)... Quickfix:使用PNG輸出或更改圖像到'TYPE_3BYTE_BGR'或'TYPE_INT_RGB'。 – haraldK

回答

1

通過圖像保存爲PNG圖像解決了這個問題。實際上造成了問題,因爲影像資料被被視爲CMYK同時節省

最後的代碼來解決這個問題是在這個link