IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[AWT] créer une simple BufferedImage


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [AWT] créer une simple BufferedImage
    Bonjour !

    J'ai recuperer du code permetant d'afficher une webcam dans awt (utilisant qtjava).
    Le probleme c'est que ce code met un filtre bleu par dessus l'image a la création du bufferedImage, et moi j'aimerai avoir l'image en couleur !

    J'ai isolé le code qui créer cette image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                // Setting up the buffered image
                int size = gWorld.getPixMap().getPixelData().getSize();
                int intsPerRow = gWorld.getPixMap().getPixelData().getRowBytes()/4;
                size = intsPerRow*cameraImageSize.getHeight();
                final int[] pixelData = new int[size];
     
                DataBuffer db = new DataBufferInt(pixelData, size);
                ColorModel colorModel = new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff);
                int[] masks= {0x00ff0000, 0x0000ff00, 0x000000ff};
                WritableRaster raster = Raster.createPackedRaster(db, cameraImageSize.getWidth(), cameraImageSize.getHeight(), intsPerRow, masks, null);
     
                final BufferedImage image = new BufferedImage(colorModel, raster, false, null);

    J'ai essayé de créer une BufferedImage plus simplement de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final BufferedImage image = new BufferedImage(320,240,BufferedImage.TYPE_INT_RGB);
    Mais évidement cela ne marche pas ... (manque la liaison avec le DataBuffer je pense) L'image "affiché" est totalement noir

    Si vous pouvez m'aidez je vous en remerci

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Bon j ai essayé comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int size = gWorld.getPixMap().getPixelData().getSize();
    int intsPerRow = gWorld.getPixMap().getPixelData().getRowBytes()/4;
    size = intsPerRow*cameraImageSize.getHeight();
    final int[] pixelData = new int[size];
    DataBuffer db = new DataBufferInt(pixelData, size);
    colorModel = ColorModel.getRGBdefault();
    WritableRaster raster = Raster.createPackedRaster(db, cameraImageSize.getWidth(), cameraImageSize.getHeight(),32, null);
    final BufferedImage image = new BufferedImage(colorModel, raster, false, null);
    Mais cela ne marche pas j'ai l'erreur suivante sur l'avant derniere ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.IllegalArgumentException: Raster sun.awt.image.SunWritableRaster@b0bdc8 is incompatible with ColorModel DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000
            at java.awt.image.BufferedImage.<init>(BufferedImage.java:616)
            at webcam.Main.main(Main.java:81)
    Dans la fonction Raster.createPackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location) le bitPerPixel semble mauvais ... mais comment puis je le créer ?

    Merci de m'aider svp

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/09/2014, 10h21
  2. Créer une simple base de données
    Par zaitsev dans le forum Débuter
    Réponses: 3
    Dernier message: 24/02/2012, 12h06
  3. [CS4] Créer une simple carte
    Par zerkos dans le forum Flash
    Réponses: 1
    Dernier message: 23/12/2010, 18h18
  4. Créer une simple progressbar dans un WebBrowser
    Par aus3004 dans le forum VB.NET
    Réponses: 9
    Dernier message: 02/05/2010, 19h48
  5. Réponses: 10
    Dernier message: 02/11/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo