2012-01-22 15 views
5

Estoy tratando de transformar una imagen volteándola horizontalmente y redimensionándola. El problema es que cuando se realiza la transformación, los colores de la imagen son raros, ha adquirido este tono rojizo. ¿Es posible arreglar esto de alguna manera, creo que leí en alguna parte que podría ser un error en la biblioteca AWT, pero no estoy seguro?¿La transformación de la imagen da como resultado una imagen roja?

Aquí está el código:

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

Véase también [cambio de color BufferedImage] (http://stackoverflow.com/questions/6122964/bufferedimage-colour-change) – trashgod

Respuesta

6

Tener una imagen a presentar un tinte por lo general significa que la imagen se representa utilizando el espacio de color equivocado, Adobe RGB vs sRGB siendo uno de los favoritos. Intenta cambiar TYPE_INT_ARGB por TYPE_INT_RGB en tu código.

+0

Se hizo el truco, ¡Gracias! – user1075481

0

También puede probar el siguiente tipo: BufferedImage.TYPE_3BYTE_BGR

Cuestiones relacionadas