Conversion Tableau de pixel en image
Résolu
tapharule
Messages postés
133
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J ai un tableau de pixel byte[] que j aimerai convertir en n importe quel format afin de le mettre dans un fichier ou de l afficher.
Je récupère l image d un peripherique , la seul information que j ai de ce tableau c est la
résolution (148 x 214 pixels with 4 grayscales)
j ai beaucoup cherche sur google met rien
Merci
Cordialement
J ai un tableau de pixel byte[] que j aimerai convertir en n importe quel format afin de le mettre dans un fichier ou de l afficher.
Je récupère l image d un peripherique , la seul information que j ai de ce tableau c est la
résolution (148 x 214 pixels with 4 grayscales)
j ai beaucoup cherche sur google met rien
Merci
Cordialement
1 réponse
-
Tu as des méthodes dans ImageIO qui permettent de manipuler des fichiers image, en particulier write(RenderedImage,String,File), où String est le format de l'image.
Pour le RenderedImage tu peux utiliser un BufferedImage. Exemple :
BufferedImage img = new BufferedImage(148,214,BufferedImage.TYPE_INT_RGB); for (int i=0; i<img.getWidth(); i++) for (int j=0; j<img.getHeight(); j++) { Color clr = ???; // à remplir avec ton tableau de byte img.setRGB(x,y, clr.getRGB()); } ImageIO.write(img,"png",new File("C:/image.png"));-
-
System.out.println(sdll.UpdateBinaryImageEmprinte(abyPhotoU.length, 0, abyPhotoU, tab ));
BufferedImage img = new BufferedImage(148,214,BufferedImage.TYPE_INT_RGB);
int k = 0;
for (int i=0; i<img.getWidth(); i++)
for (int j=0; j<img.getHeight(); j++)
{
Color clr = new Color(abyPhotoU[k]); // à remplir avec ton tableau de byte
k++;
img.setRGB(i , j, clr.getRGB());
}
ImageIO.write(img,"bmp",new File("./image.bmp"));
sa maffiche une image bizare mais sa a l air de marche
je te tien au courent -
Bien sûr que Java ,n'accepte pas ça, il attend un objet de la classe Color, tu ne peux pas lui donner un byte, ou un byte[]. Il faut que tu définisses une couleur à partir de la valeur.
Moi je ne sais pas comment tu as définis ton tableau de byte pour savoir à quoi il correspond, mais si tu mets toujours [i] (ou toujours [j]) ça veut dire que tu aurais toujours la même couleur pour toutes les lignes (ou toutes les colonnes)... Je doute que ce soit ce que tu veux.
De plus il faut dire à Java à quelle couleur correspond un byte de telle ou telle valeur. La classe Color dispose de plusieurs constructeurs et méthodes pour créer des couleurs de différentes manière, il faut donc en choisir une qui permettrait de construire la bonne couleur que celle que tu représentes avec tes byte... -
Si tu fais new Color(int rgb) tu utilises tes byte comme s'ils étaient déjà les valeur rgb que l'on récupère ensuite avec getRGB, j'imagine que ton "image bizarre" c'est que tu ne dois pas avoir les bonnes couleurs du tout...
Essayes plutôt le constructeur Color(int r, int g, int b)new Color(abyPhotoU[k],abyPhotoU[k],abyPhotoU[k])
Ou la méthode Color.getHSBColor(float h, float s, float b); mais je ne sais plus trop comment la régler pour les teintes de gris, je crois que c'est l'un des deux :
Color.getHSBColor(0,1,(float) abyPhotoU[k]/255); Color.getHSBColor(0,0,(float) abyPhotoU[k]/255);
-
Merci de m aider pour l image j ai plutot un probleme d agencement des pixel. pour les couleur c est pas bien grave car c est une image d emprinte digital provenant d un lecteur Biometrique
Comme info sur la methode qui me retourne l image en byte j ai que sa comme info
the buffer receives the pixels of the
fingerprint image
in Low resolution (148 x 214 pixels with 4 grayscales) in Full resolution (300 x 428 pixels with 256 grayscales)
Je n ai aucune idée de l agencement des pixels
quand j utilise ton
new Color(abyPhotoU[k],abyPhotoU[k],abyPhotoU[k]) j obtient l erreur la
Erreur: Color parameter outside of expected range: Red Green Blue
pour la seconde j ai pas compris comment l utiliser
-