Avatar billede gigabooster Nybegynder
18. november 2002 - 11:16 Der er 4 kommentarer og
1 løsning

enkelte pixels, adgang, måling osv.

Hvis jeg har en bmp fil på eks. 600X800 hvordan kan jeg så kigge på hver enkelt pixel og se hvilken farve den har?
Avatar billede carstenknudsen Nybegynder
18. november 2002 - 11:38 #1
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.
Avatar billede anadan Nybegynder
18. november 2002 - 11:39 #2
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
Avatar billede gigabooster Nybegynder
18. november 2002 - 11:49 #3
tak for det det lyder godt
Avatar billede gigabooster Nybegynder
18. november 2002 - 12:03 #4
Hvordan laver man et Image om til et BufferedImage?
Avatar billede carstenknudsen Nybegynder
18. november 2002 - 12:11 #5
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;
    }
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester