Accueil > Forum > > > > mon programme donne frame vide
mon programme donne frame vide
mercredi 7 février 2007 à 21:35:19 |
mon programme donne frame vide

najah01_3
|
voila mon programme qui donne frame vide import java.awt.* ; import java.awt.event.* ; import javax.swing.* ; import java.io.*; import javax.imageio.* ; import java.awt.image.* ; import java.awt.image.BufferedImage;
public class FiltreImage {
static Tableau frame ; public static void main ( String[] args ) { frame = new Tableau() ; frame.setVisible(true) ; } } class Tableau extends JFrame { //private static final long serialVersionUID = -1654172985512850048L; static final Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); static final int largeurEcran = screensize.width; static final int hauteurEcran = screensize.height + 2; // static final int largeurEcran = 1024; //static final int hauteurEcran = 768; int l = 400 ; int h = 300 ; Container pane ; public Tableau() { super() ; pane = getContentPane(); pane.setLayout(new FlowLayout()); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0) ; }}); setBounds ((largeurEcran -l) / 2, (hauteurEcran-h) / 2,l,h); PhotoCanvas photo = new PhotoCanvas("box.gif") ; l = photo.getWidth(); h = photo.getHeight(); setBounds((largeurEcran - l) / 2, (hauteurEcran - h) / 2, l, h); pane.add(photo); } }
class PhotoCanvas extends JPanel { private static final long serialVersionUID = -425196446497911425L ; Image img ; public PhotoCanvas ( String s ) { setSize (400,300 ); img = getToolkit().getImage(s) ; MediaTracker tracker = new MediaTracker(this); tracker.addImage(img, 0); try { tracker.waitForAll(); } catch(InterruptedException e) { System.err.println(e); } setSize(img.getWidth(this), img.getHeight(this)); } // on applique notre filtre public static BufferedImage contour(BufferedImage img){ float[] filter = { 0f, -1f, 0f, -1f, 4f, -1f, 0f, -1f, 0f }; Kernel kernel = new Kernel(3, 3, filter); ConvolveOp op = new ConvolveOp(kernel); return op.filter(img, null); }
public void paintComponent(Graphics g) { try{ g.drawImage(contour(createBufferedImage(img)),0,0,this); }catch(OutOfMemoryError e){ System.err.println("Pass assez de mémoire !!!"); } }
/** * Transforme une image en bufferedImage * @param image l'image a transformer * @return Retourn l'image convertie ou null (si l'image source ete null) */ public static BufferedImage createBufferedImage(Image img) throws OutOfMemoryError { if(img == null) return null;//si l'image est null pas besoin de continuer if (img instanceof BufferedImage)//si l'image est deja une instance de BufferedImage on la retourne return (BufferedImage) img; // On s'assure que l'image soit bien chargee img = new ImageIcon(img).getImage();
//Determine si l'image contient ou non un pixel de transparence boolean hasAlpha = hasAlpha(img);
int type;//type de couleur // On creer un BufferedImage ayant un format compatible avec l'environement graphique du pc BufferedImage bi = null; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); try { //Maintenant on determine si le nouveau BufferedImage aura ou non un pixel de transparence type = Transparency.OPAQUE; if (hasAlpha) type = Transparency.BITMASK;
// Creation de notre nouveau BufferedImage bi = ge.getDefaultScreenDevice() .getDefaultConfiguration(). createCompatibleImage( img.getWidth(null), img .getHeight(null), type); } catch (HeadlessException e) { // Le systeme n'as pas d'ecran ? }
if (bi == null) { // Si le BufferedImage precedement creer est null on en creer un avec un model par defaut type = BufferedImage.TYPE_INT_RGB; if (hasAlpha) type = BufferedImage.TYPE_INT_ARGB; bi = new BufferedImage(img.getWidth(null), img.getHeight(null), type); }
// On copie l'image dans le BufferedImage Graphics g = bi.createGraphics(); // maintenant on la dessine g.drawImage(img, 0, 0, null); g.dispose(); return bi; } /** * Test si une image contient ou non un canal alpha * @param image l'image a tester * @return retourne vrai si elle en contien un */ public static boolean hasAlpha(Image image) throws OutOfMemoryError { // si l'image et deja un BufferedImage alors pas besoin de checker le model de couleur if (image instanceof BufferedImage) return ((BufferedImage) image).getColorModel().hasAlpha(); //utilisation d'un 'grabber' pour retrouver le model de couleur de l'image //normalement le grab du pixel en haut a gauche est suffisant. PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false); try { if(!pg.grabPixels()) return false; } catch (InterruptedException e) { } // on check si le model de couleur correspond ou non a un chanel alpha return pg.getColorModel().hasAlpha(); }
}
|
|
mercredi 7 février 2007 à 22:12:12 |
Re : mon programme donne frame vide

DARKSIDIOUS
|
Ah oui, c'est une belle frame vide, c'est cool ! Mais sinon, qu'est-ce que tu veux qu'on fasse pour toi ?
|
|
jeudi 8 février 2007 à 23:55:16 |
Re : mon programme donne frame vide

najah01_3
|
reponse acceptée .
ja savais pas que je puisse un jour reçevoir une telle reponse .
vous pouvez rien faire . je vous jure .
on est on forum d "echange!!!!
|
|
vendredi 9 février 2007 à 07:09:05 |
Re : mon programme donne frame vide

DARKSIDIOUS
|
Mais mon pauvre ami, qu'est-ce que tu veux qu'on y fasse tu ne pose même pas une question ! C'est comme si tu va chez le garagiste, et que tu lui amène ta voiture sans rien lui dire... tu crois qu'il va vite aller décortiquer le moteur de ta voiture sans rien savoir toi ? On n'est pas devin : On peut pas deviner ce que tu veux faire ! Donc oui, dans l'état actuel, on peut rien faire pour toi puisqu'on ne sais même pas quel est ton problème ! Je me doûte bien que tu ne souhaite pas obtenir une frame vide, cà je l'ai bien compris, mais explique nous qu'est-ce qui ne marche pas... C'est le minimum pour qu'on puisse t'aider, tu crois pas ?
Donc dans un forum d'échange, on échange les idées, mais pour échanger les idées, il faut au moins savoir quelles idées on peut échanger...
|
|
vendredi 16 février 2007 à 00:54:50 |
Re : mon programme donne frame vide

najah01_3
|
oui maintenant on est d accord,
mon probleme est :
-je declare une image ( image img) . -je fais un filtre c pour cela j ai transformé mon image img en Bufferedimage (bi) .
c lors de l affichage que le problem
g.drawImage(img, 0, 0, null); g.dispose(); return bi;
|
|
lundi 4 juin 2007 à 18:25:59 |
Re : mon programme donne frame vide

neone
|
salut, j'ai fais un programme dans ce cadre pour les appareils 3LCD j'ai défini les filtres et tout. tu dois juste l'adapter. a mon avis definit une zone de dessin avant genre JPanel définit tout ce que tu veux dedans, ce que tu veux déssiner et tout aprés c tt bon. si tu ve je pe te filer ce que j'ai fais comme boulot. boncourage
|
|
lundi 4 juin 2007 à 18:55:42 |
Re : mon programme donne frame vide

najah01_3
|
salam , peux tu faire un filtre d une image blans et noir
|
|
mardi 5 juin 2007 à 12:52:30 |
Re : mon programme donne frame vide

neone
|
j'ai pas tout compris . mais bon pe tu etre plus claire: voila comment g défini les filtres : public class FiltreDescription { /** * La matrice de convolution. */ public double[][] matrice = new double[1][1]; /** * Le diviseur du filtre. */ public double diviseur = 1; /** * Le décalage à appliquer au filtre (entre -255 et 255). */ public int decalage = 0; /** * Indique si le filtre s'applique sur la composante rouge. */ public boolean isRouge = true; /** * Indique si le filtre s'applique sur la composante vert. */ public boolean isVert = true; /** * Indique si le filtre s'applique sur la composante bleu. */ public boolean isBleu = true;
/** * Construit un nouveau filtre par matrice de convolution. * */ public FiltreDescription(double[][] matrice, double diviseur, int decalage, boolean isRouge, boolean isVert, boolean isBleu) { this.matrice = matrice; this.diviseur = diviseur; this.decalage = decalage; this.isRouge = isRouge; this.isVert = isVert; this.isBleu = isBleu; } } je défini comme ça le filtre . et pour filtrer ta la classe suivante: import java.awt.*; import java.awt.image.*;
public class FiltreImage{ public FiltreDescription fil; public static final FiltreDescription FiltreRouge = new FiltreDescription( new double[][] { {1,2,1}, {2,4,2}, {1,2,1}}, 4, 0, true, false, false); public static final FiltreDescription FiltreVert = new FiltreDescription( new double[][] { {0,1,0}, {1,4,1}, {0,1,0}}, 4, 0, false, true, false); public static final FiltreDescription FiltreBleu = new FiltreDescription( new double[][] { {1,2,1}, {2,4,2}, {1,2,1}}, 4, 0, false, false, true); public FiltreImage() { fil=new FiltreDescription( new double[][] { {1,2,1}, {2,4,2}, {1,2,1}}, 4, 0, true, false, false); }
public BufferedImage filter(Image image, FiltreDescription filtre) { BufferedImage origine = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); origine.getGraphics().drawImage(image, 0, 0, null); BufferedImage retour = new BufferedImage(origine.getWidth(), origine.getHeight(), BufferedImage.TYPE_INT_RGB);
int pourcent = 0; int pixelsEffectues = 0; int maxPixels = retour.getWidth()*retour.getHeight(); System.out.println(" on commence le filtrage"); for (int x=0; x<origine.getWidth(); x++) { for (int y=0; y<origine.getHeight(); y++) { double newR = 0, newG = 0, newB = 0; for (int i=0; i<filtre.matrice.length; i++) { for (int j=0; j<filtre.matrice.length; j++) { int posx = x-i+(filtre.matrice.length+1)/2; int posy = y-j+(filtre.matrice.length+1)/2; if (posx <0) posx = 0; else if (posx >= origine.getWidth()) posx = origine.getWidth()-1; if (posy <0) posy = 0; else if (posy >= origine.getHeight()) posy = origine.getHeight()-1;
int rgb = origine.getRGB(posx, posy); if (filtre.isRouge) newR = (int) (newR + ((rgb >> 16) & 0xFF) * filtre.matrice[i][j]); if (filtre.isVert) newG = (int) (newG + ((rgb >> 8) & 0xFF) * filtre.matrice[i][j]); if (filtre.isBleu) newB = (int) (newB + ((rgb) & 0xFF) * filtre.matrice[i][j]); } } newR = newR/filtre.diviseur + filtre.decalage; newG = newG/filtre.diviseur + filtre.decalage; newB = newB/filtre.diviseur + filtre.decalage; if (newR<0)newR = 0; if (newR > 255) newR = 255; if (newG<0) newG = 0; if (newG > 255) newG = 255; if (newB<0) newB = 0; if (newB > 255) newB = 255; if (!filtre.isRouge) newR = ((origine.getRGB(x, y) >> 16) & 0xFF); if (!filtre.isVert) newG = ((origine.getRGB(x, y) >> 8) & 0xFF); if (!filtre.isBleu) newB = ((origine.getRGB(x, y)) & 0xFF); retour.setRGB(x, y, 0xFF000000+((int) newR<<16)+((int)newG<<8)+(int)newB); pixelsEffectues++; } } System.out.println("fini le filtrage"); return retour; } } si ça t'aide pas alors il faudrait que tu reformule ta question. j'espere t'avoir aidé.
|
|
mardi 5 juin 2007 à 14:50:34 |
Re : mon programme donne frame vide

najah01_3
|
la question est la suivante :
j ai une image blanc et noir et je dois faire un filtrage qui consiste a constituer une autre image tel que chaque pixel est egale la difference de 2 pixels successifs d image source
|
|
mercredi 6 juin 2007 à 11:35:06 |
Re : mon programme donne frame vide

neone
|
Salut, c'est quoi deux pixels successifs?. enfin que importe disons que dans le cadre de ce schéma : p[i-1][j-1] p[i][j-1] p[i+1][j-1] p[i-1][j] p[i][j] p[i+1][j] p[i-1][j+1] p[i][j+1] p[i+1][j+1] supposons que tes deux pixels successifs sont : p[i-1][j-1] p[i][j-1] et tu veux avoir la différence. définit un type d'image qui te permet d'avoir accés a tes pixels.(ReadableImage avec la methode getPixel(x,y)). faire des boucles de parcours ( deux boucles) biensur en evitant les bords et les traitant a part. tu prend la valeur en (i,j) et celle en (i+1,j) (dans ce que g compris en terme de pixels succesifs) et tu crée une image bufer pour mettre les valeurs. Franchement c pas la prog qui cause probleme c surtout comprendre ce qu'on veut programmer. boncourage.
|
|
Cette discussion est classée dans : type, image, static, img, bufferedimage
Répondre à ce message
Sujets en rapport avec ce message
filtre/error "cannot find createBufferedImage [ par najah01_3 ]
salut ,j ai testé ce code pour un filtre d image .un message erreur "cannor find create bufferedImage"merci d avancevoila mon code import java.awt.*
TiledImage: Passer par Graphics2D.drawImage() ou par BufferedImage.getSubImage() ? [ par nodragem ]
Bonjour à tous, je fais mes premiers pas en programmation et suis entrain d'écrire un petit moteur de jeu (pour un jeu de Tank). Comme y'aura des spri
commnet faire fonctionner mon code [ par jouj85 ]
s'il vous plait pouvez vous m'aider a corriger mon code voila mon code /* * To change this template, choose Tools | Templates * and open th
chargement image dans un jar via une méthode static [ par pilipili22 ]
Bonjour tout le monde. Mon problème est surement très simple mais après avoir chercher sur internet et être revenu bredouille [^^sad1] je m'adresse à
BufferedImage dans un JPanel [ par patriospatrios ]
Bonjour,je reçois une image via le réseau sous forme d'un tableau de byte. Je suis entrain de transformer ce tableau de byte en un BufferedImage pour
Afficher une image dans une appli [ par ozielm ]
MarcBonjour à tous, j'ai lu tous les sujets qui expliquaient comment afficher une image dans une appli mais voilà, je n'ai pas réussi à en faire march
Redimensionner image animée [ par flolag ]
Salut,J'ai créer une applet de redimensionnement d'image. J'effectue le redimensionnement avec cette méthode ://Redimensionnement de l'image
Erreur lors de la sauvegarde d'une image [ par yvesyves ]
Bonjour, Je souhaite enregistrer une image (capture) (c'est une BufferedImage) en (captureJpeg) (toujours une BufferedImage) avec la compression Jpeg.
Comment mettre un BufferedImage dans un Vector [ par noula27 ]
Bonjour, Est ce que quelqu'un peut m'aider afin de mettre mon image de type [b]BufferedImage[/b] dans un type [b]Vector[/b] je n'arrive pas a le fair
Aider un débutant svp [ par guitoulefoux ]
Bonjour,J'ai besoin de votre aide pour comprendre d'ou vient mon probléme.Je dois compiler 2 class:1- import javax.swing.*; <b
Livres en rapport
|
Derniers Blogs
NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010 par tja
Après une petite introduction à son utilisation que vous pouvez lire ici j'ai également eu envie d'installer ma copie et de jouer un peu avec. Après les premières minutes de son utilisation. J'ai tout de suite ADORE. L'utilisation intuitive sans besoi...
Cliquez pour lire la suite de l'article par tja XNA 4.0 POUR CRéER DES JEUX 3D SOUS WINDOWS PHONE 7 SERIESXNA 4.0 POUR CRéER DES JEUX 3D SOUS WINDOWS PHONE 7 SERIES par RaptorXP
On savait déjà que le développement d'applications pour Windows Phone 7 Series se ferait par l'intermediaire de Silverlight et XNA. Les détails, et outils de développement (selon cetaines rumeurs) sont attendus pour le MIX10 la semaine prochaine à Las...
Cliquez pour lire la suite de l'article par RaptorXP [TOOLS] NDEPEND 3 DANS VISUAL STUDIO, WAAAAAAAOU!!![TOOLS] NDEPEND 3 DANS VISUAL STUDIO, WAAAAAAAOU!!! par JeremyJeanson
NDepend passé en version 3. Comme pour toute version majeur, la version 3 a son lots de nouveautés : performances, fonctionnalités accrues . etc . Mais dans tout cela il y a la fonctionnalité qui dénote. Le petit truc qui fait que NDepend me fait dire Waa...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] GROSSES MéPRISES EN PERSPECTIVE SUR LE KIT DE MIGRATION WF3->WF4[WF4] GROSSES MéPRISES EN PERSPECTIVE SUR LE KIT DE MIGRATION WF3->WF4 par JeremyJeanson
Comme un certain nombre de fanatiques des flux RSS, je suis avec grand intérêt les articles de la team WCF/WF et forcément l'annonce d'hier concernant un kit de migration WF3->WF4 m'a fait chaud au c½ur ;) (pour rappel, mon post au sujet de la migratio...
Cliquez pour lire la suite de l'article par JeremyJeanson RéUNION DU CLUB MOSS PARISRéUNION DU CLUB MOSS PARIS par VANNESTE Xavier
Bonjour à tous la réunion du club moss aura lieu le 15 mars 2010 à 14 heures:
14:00 - 14:05 Paris, EROL GIRAUDY + Gaetan BOUVERET + Nicolas Georgeault intro Présentateur : Pierre Erol GIRAUDY14:05 - 14:30 Paris, Worflow - visio Services - We...
Cliquez pour lire la suite de l'article par VANNESTE Xavier
Forum
MODéLISATIONMODéLISATION par lallou22
Cliquez pour lire la suite par lallou22 RE : API COMMUNESRE : API COMMUNES par katamara
Cliquez pour lire la suite par katamara
Logiciels
Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor Xlite (v 3.0 build 41150)XLITE (V 3.0 BUILD 41150)c'est un logiciel qui permet de téléphoner par Internet à l'aide d'un compte SIP pratique pour le... Cliquez pour télécharger Xlite Academy System (10.9.3.0)ACADEMY SYSTEM (10.9.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|