Traitement d'image

Signaler
Messages postés
2
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
2 mars 2010
-
Messages postés
1
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
18 août 2010
-
Bonjour à tous,

J'essaye en ce moment de DIVISER une iamge en bloc(ensemble de pixel) en Java, cependant je n'arrive pas à diviser ni par pixel ni par ensemble de pixel cad (bloc), j'ai créer une classe qui contient une matrice mais il faut utiliser des methode standare de boblio java pour diviser l'image en matrice qui contient des bloc .
c a dire je veux une classe ou methode qui permet de diviser en bloc et de manipuler ces bloc (déplacer) et ces pixels.
. Pourriez-vous m'aider?

Merci d'avance!

Cordialement,

marwen

7 réponses

Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
> J'essaye en ce moment de DIVISER une image en bloc

Essaie ceci:
public static BufferedImage[] splitImage(BufferedImage img, int cols, int rows) {
    int w = img.getWidth() / cols;
    int h = img.getHeight() / rows;
    int num = 0;
    BufferedImage imgs[] = new BufferedImage[w * h];
    for (int y = 0; y < rows; y++) {
        for (int x = 0; x < cols; x++) {
            imgs[num] = new BufferedImage(w, h, img.getType());
            // Tell the graphics to draw only one block of the image
            Graphics2D g = imgs[num].createGraphics();
            g.drawImage(img, 0, 0, w, h, w * x, h * y, w * x + w, h * y + h, null);
            g.dispose();
            num++;
        }
    }
    return imgs;
}

Bonjour

Tu peux aussi t'en sortir avec un PixelGrabber, c'est plus simple à mon avis.


Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
Pourquoi c'est plus simple avec un PixelGrabber?

En fait, ça revient presqu'au même, le PixelGrabber te permet de récupérer un tableau de pixels (sous forme d'entiers) et ça ne t'oblige ni à créer une instance de Graphics2D ni à créer des instances de BufferedImage (tu peux quand même appeler setRGB si nécessaire). J'ai peut-être sousestimé la difficulté d'utiliser le PixelGrabber, à tester.


Messages postés
2
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
2 mars 2010

merci de m'avoir répondu
je me demandais si vous pourriez me definir le fonctionnement de chaque terme?
getRGB permet de lire un pixel?
setRGB permet d'ercire un pixel?
le probleme est de déplacer un pixel d'une image de position(x,y) vers une position (x',y')pour faire une operation de crypatge d'image, avec le setRGB on peut modifier la couleur?ou ....
comment utiliser un PixelGrabber?


Pourriez-vous m'aider?

Merci d'avance!

Cordialement,

marwen

Je te conseille déjà de regarder dans la documentation de l'API les classes dont nous t'avons parlé, notamment PixelGrabber, BufferedImage, Image et ImageIO :
http://java.sun.com/javase/6/docs/api/

Utilise principalement la méthode grabPixels de la classe PixelGrabber pour récupérer tous les pixels de l'image. Cependant, des appels à getRGB et setRGB peuvent peut-être suffire, à toi de voir.



Messages postés
1
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
18 août 2010

Bonjour à Tous.
je fais une application en java (annuaire) je dois recuperer dans une db access des infos. avec le code ci joint je recupere les l'identité de la personne(nom, prenom, mail...) mais la photo ne se recupere pas. l'image est enregister au format bitmap dans la bd access. Si quelqu'un peut nous corriger.

private void rechercher(){
Blob blob;
try {
//creation dde la connexion
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connect=DriverManager.getConnection("jdbc:odbc:"+BD,"","");

s=connect.createStatement();
System.out.println("Connection etablie");
nom=tbnom.getText();
//selection de la table et preparation de la requête

String rek="SELECT * FROM collegues WHERE Nom='"+nom+"'";
rs=s.executeQuery(rek);

//Traitement de la requête

nbrcol=rs.getMetaData().getColumnCount();
//System.out.println("Colonnes" +nbrcol);

while (rs.next()) {
for (int i = 1; i < nbrcol; i++) {
if (i==2) {
jlnom.setText(rs.getString(i));

}
if (i==3) {
jlprenom.setText(rs.getString(i));
}
if (i==4) {
dtnais.setText(rs.getString(i));
}
if (i==5) {
dtentree.setText(rs.getString(i));
}
if (i==6) {
dtordination.setText(rs.getString(i));
}
if (i==7) {
dtderniervoeux.setText(rs.getString(i));
}
if (i==8) {
jlemail.setText(rs.getString(i));
}
if (i==9) {
jltel.setText(rs.getString(i));
}
if (i==14) {
jlnomcom.setText(rs.getString(i));
}
if (i==15) {
jladresse.setText(rs.getString(i));
}
if (i==18) {
// tache.setText(rs.getString(i));
jTaches.setText(rs.getString(i));
}
if (i==20) {
//photoo.setIcon((new ImageIcon(rs.getString(i))));

//blob = rs.getBlob("photo");
// ImageIcon icon = new ImageIcon(blob.getBytes(1, (int)blob.length()));
ImageIcon icon=new ImageIcon(rs.getBytes("photo"));
photoo = new JLabel(icon);

}

}

}



} catch (SQLException ex) {
Logger.getLogger(fenPrincipale.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(fenPrincipale.class.getName()).log(Level.SEVERE, null, ex);
}