Obtener RGB de una imagen almacenada en búfer

kotoko:

¿Alguien puede explicar cómo obtener una matriz de valor rgb de una BufferedImage?

Tengo una imagen en escala de grises en un BufferedImage y necesito extraer una matriz de 0 a 255 valores que describan la imagen.
Sé que BufferedImage es correcta porque puedo guardarlo en PNG. Sin embargo, si lo uso int[] dataBuffInt = ((DataBufferInt) heightMap.getDataBuffer()).getData();, obtengo un montón de números negativos enormes.

He buscado durante un tiempo y he visto algunas referencias al cambio de algunos valores ( publicación ), pero realmente no entiendo lo que están diciendo.

Básicamente, quiero pasar de un BufferedImage a una matriz de 0 a 255 valores RBG.
No estoy seguro de haberme explicado correctamente, por lo que es necesario pedir más detalles.

Editar:
@Garbage Gracias por el consejo. Intenté int [] dataBuffInt = heightMap.getRGB (0, 0, heightMap.getWidth (), heightMap.getHeight (), null, 0, heightMap.getWidth ()); Pero obtén el mismo resultado.
@Greg Kopff El resultado es 2 y se estableció en TYPE_INT_ARGB

dacwe:

Obtienes números negativos ya que el valor int que obtienes de uno de los píxeles está compuesto por rojo, verde, azul y alfa. Debe dividir los colores para obtener un valor para cada componente de color.

La forma más sencilla de hacer esto es crear un Colorobjeto y usar los métodos getRed, getGreeny getBlue(así como getAlpha) para obtener los componentes:

public static void main(String... args) throws Exception {

    BufferedImage image = ImageIO.read(
         new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));

    int w = image.getWidth();
    int h = image.getHeight();

    int[] dataBuffInt = image.getRGB(0, 0, w, h, null, 0, w); 

    Color c = new Color(dataBuffInt[100]);

    System.out.println(c.getRed());   // = (dataBuffInt[100] >> 16) & 0xFF
    System.out.println(c.getGreen()); // = (dataBuffInt[100] >> 8)  & 0xFF
    System.out.println(c.getBlue());  // = (dataBuffInt[100] >> 0)  & 0xFF
    System.out.println(c.getAlpha()); // = (dataBuffInt[100] >> 24) & 0xFF
}

Salidas:

173
73
82
255

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Panorámica de una imagen almacenada en búfer

Atenuar una imagen almacenada en búfer

Dibujar en una imagen almacenada en búfer

Conversión de imagen almacenada en búfer a imagen SWT

Imagen de JFileChooser a imagen almacenada en búfer

Conversión de una imagen almacenada en búfer en otro tipo

Voltear una imagen almacenada en búfer horizontalmente

Cómo mostrar una imagen almacenada en búfer

Sirve una imagen almacenada en búfer mediante un controlador de anillo

Java: relleno de una imagen almacenada en búfer con píxeles transparentes

Rotación de imagen almacenada en búfer en Java

Imagen frente a imagen almacenada en búfer

¿Cómo convertir una imagen almacenada en búfer a imagen y viceversa?

Agregar imagen almacenada en búfer en un icono de imagen existente

Deshacerse del canal alfa en una imagen almacenada en búfer

¿Cómo enviar una imagen almacenada en búfer como JSON a otra API?

¿Cómo enviar una imagen almacenada en búfer como JSON a otra API?

¿Cómo mostrar una imagen almacenada en búfer en JSF sin escribir una imagen en el disco?

Resultado de búfer inesperado al obtener una imagen PNG

Imagen de recorte de Javascript almacenada en búfer a partir de coordenadas

El uso de libpng 1.2 para escribir el búfer de imagen RGB en el búfer PNG en la memoria causa una falla de segmentación

Cómo borrar parte de la imagen almacenada en búfer con p5.js

Java: la adición a la imagen almacenada en búfer a través de createGraphics no funciona

¿Cómo obtener un InputStream de una imagen almacenada?

Guardar imagen almacenada en búfer con fondo transparente

Copiar imagen almacenada en búfer al portapapeles

¿Cómo obtener la URL de una imagen almacenada en Azure Blob Storage después de la carga?

¿Cómo obtener una imagen con búfer de un SVG?

Obtener bits por píxel de una imagen con búfer

TOP Lista

CalienteEtiquetas

Archivo