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
ceration d'un BufferedImage a partir d'un type Vector [ par noula27 ]
Bonjour, je veux faire la création d'une [b]BufferedImage[/b] a partir d'une variable de type [b]Vector[/b] qui contient déjà les pixels d'une image.
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
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc
Forum
RE : CODE GéNéRé RE : CODE GéNéRé par Pylouq
Cliquez pour lire la suite par Pylouq
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|