Importe imágenes de clase Java a Excel. El desenfoque es que la imagen está cubierta con una capa de rojo.
BufferedImage estática pública getImages(byte[] datos) lanza IOException {
ByteArrayInputStream entrada = new ByteArrayInputStream( datos);
return ImageIO.read(entrada)
}
Después de la revisión, aprendimos que al leer una imagen, es posible que el método ImageIO.read() no maneje correctamente la información ICC de la imagen (esta es la imagen JPEG). formatear un tipo de información de encabezado), lo que da como resultado un color rojizo cuando se representa la imagen. El color de primer plano está cubierto con una capa de rojo. Solución:
Ya no use el método ImageIO.read() para cargar imágenes, sino use Image src=Toolkit.getDefaultToolkit().getImage proporcionado en el JDK
Image src= Kit de herramientas El método .getDefaultToolkit().getImage carga la imagen.
getDefaultToolkit().getImage(file.getPath());
BufferedImage image=BufferedImageBuilder.toBufferedImage(src); //Imagen a BufferedImage
O Toolkit.getDefaultToolkit().
O Toolkit.getDefaultToolkit().createImage
Imagen imageTookit = Toolkit.getDefaultToolkit().createImage(bytes
BufferedImage cutImage = BufferedImageBuilder.toBufferedImage(imageTookit); );
Código fuente de BufferedImageBuilder:
Imagen Buffered pública estática a Imagen Buffered(Imagen de imagen) {
if (instancia de imagen de BufferedImage) {
devolver imagen (BufferedImage)
}
//Toolkit.createImage(bytes
BufferedImage cutImage = BufferedImageBuilder.
/ / Este código garantiza que todos los píxeles de la imagen estén cargados
image = new ImageIcon(image).getImage()
BufferedImage bimage = null
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
prueba {
int transparencia = Transparencia .OPAQUE
GraphicsDevice gs = ge; . getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(image.getWidth(null),
image. getHeight (null), transparencia);
} catch (HeadlessException e) {
//El sistema no tiene pantalla
}
if ( bimage == null) {
// Crea una imagen almacenada en búfer usando el modelo de color predeterminado
int type = BufferedImage.TYPE_INT_RGB
bimage = nueva Imagen Buffered(image. getWidth(null),
image.getHei
ght(null), type);
}
//Copiar la imagen a la imagen del búfer
Gráficos g = bimage.createGraphics(); p> p>
// Dibuja la imagen en la imagen del búfer
g. drawImage(image, 0, 0, null
g.dispose(); /p >
devolver bimagen
}