Du skal lægge dit billede ind i et BufferedImage (ligger i klassen java.awt.image) og på det har du metoden getRGB(int,int) der fortæller hvilken farve der ligger.
Hvis du har den som et BufferedImage, kan du getRGB(int x, int y) Dette returnerer en int, som du eks kan lave en Color med eks Color pixel = new Color(bufferedImage.getRGB(100,200));
Hvis du skal bruge de enkelte r, g, b værdier, kan du evt trække dem ud af den nye Color
Der er to statiske metoder herunder som du skal bruge for at få et BufferedImage fra et Image. Det er også muligt direkte at tegne det oprindelige image i dit BufferedImage vha Graphcis2D objektet du kan få med createGraphics. Metoden herunder skulle dog kunne løse det mere elegant og generelt. Image i = ...; BufferedImage bi = toBufferedImage( i ); // This method returns true if the specified image has transparent pixels public static boolean hasAlpha(Image image) { // If buffered image, the color model is readily available if (image instanceof BufferedImage) { BufferedImage bimage = (BufferedImage)image; return bimage.getColorModel().hasAlpha(); }
// Use a pixel grabber to retrieve the image's color model; // grabbing a single pixel is usually sufficient PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false); try { pg.grabPixels(); } catch (InterruptedException e) { }
// Get the image's color model ColorModel cm = pg.getColorModel(); return cm.hasAlpha(); }
// This method returns a buffered image with the contents of an image public static BufferedImage toBufferedImage(Image image) { if (image instanceof BufferedImage) { return (BufferedImage)image; }
// This code ensures that all the pixels in the image are loaded image = new ImageIcon(image).getImage();
// Determine if the image has transparent pixels; for this method's // implementation, see e665 Determining If an Image Has Transparent Pixels boolean hasAlpha = hasAlpha(image);
// Create a buffered image with a format that's compatible with the screen BufferedImage bimage = null; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); try { // Determine the type of transparency of the new buffered image int transparency = Transparency.OPAQUE; if (hasAlpha) { transparency = Transparency.BITMASK; }
// Create the buffered image GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); bimage = gc.createCompatibleImage( image.getWidth(null), image.getHeight(null), transparency); } catch (HeadlessException e) { // The system does not have a screen }
if (bimage == null) { // Create a buffered image using the default color model int type = BufferedImage.TYPE_INT_RGB; if (hasAlpha) { type = BufferedImage.TYPE_INT_ARGB; } bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type); }
// Copy image to buffered image Graphics g = bimage.createGraphics();
// Paint the image onto the buffered image g.drawImage(image, 0, 0, null); g.dispose();
return bimage; }
Synes godt om
Ny brugerNybegynder
Din løsning...
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.