2012-01-22 12 views
5

イメージを水平方向に反転してサイズを変更してイメージを変換しようとしています。問題は、変換が完了すると画像の色がすべて変わっていることです。この赤みを帯びています。これをどうにかして修正することは可能ですか?私はAWTライブラリのバグかもしれないが、どこか読んでいると思いますが、わかりません。通常、画像が間違っている色空間は、Adobe RGBはsRGBの対根強い人気を誇っているを使用してレンダリングされていることを意味画像変換の結果、赤い画像になりますか?

import java.awt.Graphics2D; 
import java.awt.geom.AffineTransform; 
import java.awt.image.AffineTransformOp; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 

public class LocalImageSizeFlip { 

public static void main(String[] args) { 
    BufferedImage img = null; 

    try { 
     img = ImageIO.read(new File("C:\\picture.jpg")); 
     AffineTransform tx = AffineTransform.getScaleInstance(1, -1); 
     tx.translate(0, -img.getHeight(null)); 
     AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); 
     img = op.filter(img, null); 
     img = resize(img, 100, 75); 
     File newFile = new File("newPicture.jpg"); 
     ImageIO.write(img, "JPEG", newFile); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

private static BufferedImage resize(BufferedImage image, int width, int height) { 
    BufferedImage resizedImage = new BufferedImage(width, height, 
    BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = resizedImage.createGraphics(); 
    g.drawImage(image, 0, 0, width, height, null); 
    g.dispose(); 
    return resizedImage; 
    } 
} 
+0

も参照[バッファ画像の色の変化](http://stackoverflow.com/questions/6122964/bufferedimage-colour-change) – trashgod

答えて

6

画像は色合いを開発持つ:ここで

はコードです。あなたのコードでTYPE_INT_ARGBをTYPE_INT_RGBに変更してみてください。

+0

を、ありがとう! – user1075481

0

また、次のタイプ試すことができます:それはトリックをしたBufferedImage.TYPE_3BYTE_BGR

関連する問題