una mostrar manejo jpg imagenes imagen imageio guardar crear como java image image-manipulation bufferedimage argb

mostrar - manejo de imagenes en java netbeans



Crea una imagen almacenada en el archivo y haz que sea TYPE_INT_ARGB (3)

Tengo un archivo PNG con transparencia que se carga y almacena en una BufferedImage . Necesito que esta TYPE_INT_ARGB BufferedImage sea ​​de TYPE_INT_ARGB . Sin embargo, cuando uso getType() el valor devuelto es 0 ( TYPE_CUSTOM ) en lugar de 2 ( TYPE_INT_ARGB ).

Así es como cargo el .png :

public File img = new File("imagen.png"); public BufferedImage buffImg = new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB); try { buffImg = ImageIO.read(img ); } catch (IOException e) { } System.out.Println(buffImg.getType()); //Prints 0 instead of 2

¿Cómo puedo cargar el .png, guardarlo en BufferedImage y convertirlo en TYPE_INT_ARGB ?


Crea una Imagen Buffered desde un archivo y conviértela en TYPE_INT_RGB

import java.io.*; import java.awt.image.*; import javax.imageio.*; public class Main{ public static void main(String args[]){ try{ BufferedImage img = new BufferedImage( 500, 500, BufferedImage.TYPE_INT_RGB ); File f = new File("MyFile.png"); int r = 5; int g = 25; int b = 255; int col = (r << 16) | (g << 8) | b; for(int x = 0; x < 500; x++){ for(int y = 20; y < 300; y++){ img.setRGB(x, y, col); } } ImageIO.write(img, "PNG", f); } catch(Exception e){ e.printStackTrace(); } } }

Esto pinta una gran raya azul en la parte superior.

Si lo quieres ARGB, hazlo así:

try{ BufferedImage img = new BufferedImage( 500, 500, BufferedImage.TYPE_INT_ARGB ); File f = new File("MyFile.png"); int r = 255; int g = 10; int b = 57; int alpha = 255; int col = (alpha << 24) | (r << 16) | (g << 8) | b; for(int x = 0; x < 500; x++){ for(int y = 20; y < 30; y++){ img.setRGB(x, y, col); } } ImageIO.write(img, "PNG", f); } catch(Exception e){ e.printStackTrace(); }

Abre MyFile.png, tiene una raya roja en la parte superior.


try { File img = new File("somefile.png"); BufferedImage image = ImageIO.read(img ); System.out.println(image); } catch (IOException e) { e.printStackTrace(); }

Ejemplo de salida para mi archivo de imagen:

BufferedImage@5d391d: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@50a649 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 800 height = 600 #numDataElements 3 dataOff[0] = 2

Puede ejecutar System.out.println (object); en casi cualquier objeto y obtener información al respecto.


BufferedImage in = ImageIO.read(img); BufferedImage newImage = new BufferedImage( in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImage.createGraphics(); g.drawImage(in, 0, 0, null); g.dispose();