13. september 2004 - 09:20Der er
4 kommentarer og 1 løsning
Java RGB-værdier
Hej Eksperter Jeg har indlæst et billede fra HD med: imgFile = new File(filename); try { BufferedImage myImage = ImageIO.read(imgFile); } catch(Exception exception){}
Nu vil jeg så gerne læse R,G og B-værdier for enkelte pixels i billedet. Hvordan kan dette lettest lade sig gøre? Jeg har selv prøvet med: Raster image = myImage.getData(); int[] i = new int[3]; int[] rgb = image.getPixel(x,y,i); r = rgb[0]; g = rgb[1]; b = rgb[2];
Desværre bliver g og b altid sat til 0 på denne måde.
Jeg tænkte at rgb[0] måske repræsenterede hele farven kompakt. Derfor prøvede jeg at sige: Color c = new Color(rgb[0]); int r = Color.getRed(); int g = Color.getGreen(); int b = Color.getBlue();
Dette resulterer desværre i at r og g altid er 0.
Nogen forslag til at løse dette lille problem? Findes der evt. en mere oplagt måde at gøre alt dette på?
Hvordan lokal peering kan øge kundetilfredsheden og kontrollen
24. februar 2025
Slettet bruger
13. september 2004 - 10:51#1
Jeg har selv brugt følgende kode til at finde (og manipulere med RGBA-værdier i et Image:
---------- Kode snippet start ----------
Image image; // Load image here
// Create empty BufferedImage, sized to Image BufferedImage img = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
// Draw Image into BufferedImage Graphics g = img.getGraphics(); g.drawImage(image, 0, 0, null);
// get Red, Green, Blue & Alpha values from a desired pixel int rgba = img.getRGB(x, y); // X-coordinate, Y-coordinate int red = (rgba >> 16) & 0xff; int green = (rgba >> 8) & 0xff; int blue = rgba & 0xff; int alpha = (rgba >> 24) & 0xff;
Get the color of a specific pixel We assume that we have an Image called picture pixels = new int[width*height]; PixelGrabber pg = new PixelGrabber(picture, 0, 0, width, height, pixels, 0, width); try { pg.grabPixels(); } catch (InterruptedException e) { }
From here, individual pixel can be accessed via the pixels array. int c = pixels[index]; // or pixels[x * width + y] int red = (c & 0x00ff0000) >> 16; int green = (c & 0x0000ff00) >> 8; int blue = c & 0x000000ff; // and the Java Color is ... Color c = new Color(red,blue,green);
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.