Conversion Tableau de pixel en image

Résolu/Fermé
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 - 8 avril 2013 à 03:06
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 9 avril 2013 à 06:01
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


A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 avril 2013 à 06:01
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"));
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
8 avril 2013 à 18:19
Merci pour ta reponse

byte[] monTableauDeByte = fonctionRetournantTableauPixel();

java n accepte pas le Color clr = monTableauDeByte;

ni Color clr = monTableauDeByte[i];

ni Color clr = monTableauDeByte[j];

Merci de m aider

Cordialement
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
8 avril 2013 à 18:47
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
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 avril 2013 à 18:48
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...
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 avril 2013 à 18:57
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);
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
8 avril 2013 à 22:36
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
0