Commnet faire fonctionner mon code

jouj85 Messages postés 9 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 25 avril 2010 - 22 déc. 2009 à 19:42
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 22 déc. 2009 à 21:43
s'il vous plait pouvez vous m'aider a corriger mon code







voila mon code

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package detect_tum.detect_tum;

/**
* @author Houcem
* @date 24 mars 2009
* @time 14:34:38
*/

import java.awt.*;
import java.awt.image.*;
import javax.swing.JPanel;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.io.*;

public class ImagePanel extends JPanel{


/* Attributs protégés */
protected Image img;
protected Image orgimg;
protected BufferedImage bi;


/* Constructeur par défaut */
public ImagePanel() {
img = null;
orgimg = null;
}


/* Constructeur paramétré */
public ImagePanel(Image img) {
if (img == null) {
throw new IllegalArgumentException("img is null..");
}
this.img = img;
this.orgimg = img;
bi = toBufferedImage();
adaptSize();
}


/* Surcharge de la méthode paint */
@Override
public void paint(Graphics g) {
waitUntilImageIsLoaded();
g.drawImage(img, 0, 0, null);
}


/* Setter sur l'image */
public void setImage(Image img) {
waitUntilImageIsLoaded();
this.img = img;
this.orgimg = img;
bi = toBufferedImage();
adaptSize();
}


/* Getter sur l'image */
public Image getImage() {
return img;
}


/* Restitue l'image sauvegardée */
public void reset() {
img = orgimg;
bi = toBufferedImage();
adaptSize();
repaint();
}


/* Attend jusqu'à l'image se charge complètement */
public void waitUntilImageIsLoaded() {
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(img, 0);
try {
tracker.waitForAll();
}
catch (InterruptedException ie) {
ie.printStackTrace();
}
// Prendre la dimension de l'image
this.setSize(getImageDimension());
}


/* Adapte les dimensions du panel aux dimensions de l'image */
public void adaptSize() {
this.setSize(getImageDimension());
this.setBorder(new javax.swing.border.TitledBorder(""));
}


/* Crée une BufferedImage à partir d'une Image */
public BufferedImage toBufferedImage() {
Dimension dim = getImageDimension();
BufferedImage b = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = b.createGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();

return b;
}


/* Retourne les dimensions de l'image */
public Dimension getImageDimension() {
return new Dimension(img.getWidth(null), img.getHeight(null));
}


/* Transformer l'image en niveaux de gris */
public void turnToGray() {
Dimension dim = getImageDimension();
BufferedImage b = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_BYTE_GRAY);
Graphics2D g = b.createGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();

bi = b;
img = b;
repaint();
}


/* Applique un filtre passe-haut */
public void highPass() {
Dimension dim = getImageDimension();
BufferedImage source = toBufferedImage();
BufferedImage dest = (BufferedImage)this.createImage(dim.width-2, dim.height-2);

for (int i=1; i<dim.width - 1; i++) {
for (int j=1; j<dim.height - 1; j++) {
// On récupère la matrice de "centre" (x,y) et de diamètre 3
int tab[] = new int[9];
int k = 0;
for (int x=i-1; x<=i+1; x++) {
for (int y=j-1; y<=j+1; y++) {
int rgb = source.getRGB(x, y);
int red = (rgb >> 16 ) & 0xFF;
int green = (rgb >> 8 ) & 0xFF;
int blue = rgb & 0xFF;
int gray = (red * 299 + green * 587 + blue * 114) / 1000;

tab[k++] = gray;
}
}

// Application du filtre
int mask[] = new int[] {-1, -1, -1, -1, 9, -1, -1, -1, -1};
int s = 0;
for (k=0; k<9; k++) {
s += mask[k] * tab[k];
}

int sum = (int)Math.sqrt(s * s + s * s);

dest.setRGB(i-1, j-1, (sum<<24)+(sum<<16)+(sum<<8)+(sum));
}
}

bi = dest;
img = bi;
repaint();
}


/* Rend une version filtrée (Median) de img */
public void median(int medianFilterSize) {
Dimension dim = getImageDimension();
BufferedImage source = toBufferedImage();
BufferedImage dest = (BufferedImage)this.createImage(dim.width-medianFilterSize, dim.height-medianFilterSize);

for (int i=medianFilterSize-1; i<dim.width - medianFilterSize; i++) {
for (int j=medianFilterSize-1; j<dim.height - medianFilterSize; j++) {
final int TABSIZE = medianFilterSize * medianFilterSize;

// On récupère la matrice de "centre" (x,y) et de diamètre medianFilterSize
int tab[] = new int[TABSIZE];
int k = 0;
for (int x=i-medianFilterSize/2; x<=i+medianFilterSize/2; x++) {
for (int y=j-medianFilterSize/2; y<=j+medianFilterSize/2; y++) {
int rgb = source.getRGB(x, y);
int red = (rgb >> 16 ) & 0xFF;
int green = (rgb >> 8 ) & 0xFF;
int blue = rgb & 0xFF;
int gray = (red * 299 + green * 587 + blue * 114) / 1000;

tab[k++] = gray;
}
}

java.util.Arrays.sort(tab);

dest.setRGB(i-medianFilterSize/2, j-medianFilterSize/2, (tab[TABSIZE/2]<<24)+(tab[TABSIZE/2]<<16)+(tab[TABSIZE/2]<<8)+(tab[TABSIZE/2]));
}
}

bi = dest;
img = dest;
repaint();
}


/* Filtre de Canny */


/* Effecture un seuillage suivant la valeur du seuil */
public void thresholding() {
// Une BufferedImage pour pouvoir manipuler l'image en mémoire
bi = toBufferedImage();
Dimension dim = getImageDimension();

for (int i=0; i<dim.width; i++) {
for (int j=0; j<dim.height; j++) {
// Calcul du niveau de gris
int rgb = bi.getRGB(i, j);
int red = (rgb >> 16) & 0xFF;
int blue = (rgb >> 8) & 0xFF;
int green = rgb & 0xFF;
int gray = ((red * 299) + green * 587 + blue * 114) / 1000;
// Test avec la valeur du seuil
if (gray > 0) {
bi.setRGB(i, j, new Color(255, 255, 255).getRGB());
}
else {
bi.setRGB(i, j, new Color(0, 0, 0).getRGB());
}
}
}

img = bi;

repaint();
}


/* Retourne le niveau du gris du pixel */
protected int getGray(int i, int j) {
// Calcul du niveau de gris
int rgb = bi.getRGB(i, j);
int red = (rgb >> 16) & 0xFF;
int blue = (rgb >> 8) & 0xFF;
int green = rgb & 0xFF;

return (red * 299 + green * 587 + blue * 114) / 1000;
}


/* Retourne vrai si le pixel est blanc */
public boolean isWhite(int i, int j) {
if (getGray(i, j) > 0) {
return true;
}
else {
return false;
}
}


/* Enregistre l'image */
public void saveAsJPEG(String filename) {
Dimension size = this.getSize();
BufferedImage myImage = new BufferedImage(size.width, size.height,BufferedImage.TYPE_INT_RGB);
Graphics2D graph = myImage.createGraphics();
this.paint(graph);
try {
OutputStream out = new FileOutputStream(filename);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(myImage);
out.close();
}
catch (Exception e) {
throw new UnsupportedOperationException("Couldn't save choices image..");
}
}


}

1 réponse

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 déc. 2009 à 21:43
Bonjour

Merci de respecter le réglement.

Un bonjour/Un titre explicite
Une question explicite

Et si possible utilise la mise en forme du code offerte par le forum.

Ca permettra a quelqu'un de répondre rapidement.
+ Tu aides + tu auras une réponse rapide (c'est logique)

Merci
0
Rejoignez-nous