optimisation de la recuperationd'image Rgb par socket - Java - Programmation
Marsh Posté le 26-01-2005 à 09:40:16
mysticpower a écrit : Je sais la programmation java est considérée comme lentes, |
Tu commences mal la journée.
mysticpower a écrit : je pense que mon code peut etre optimisé... |
C'est plutôt ça en fait
Marsh Posté le 27-01-2005 à 13:57:20
en modifiant mon code
je replace le bufferImage par
BufferedImage bufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
je cherche une fonction qui pourrait faire ici
bufferedImage.setRGB(0, 0, w, h, stockage, 0, w);
avec stockage une tableau de byte
Marsh Posté le 26-01-2005 à 09:27:59
Je sais la programmation java est considérée comme lentes,
je pense que mon code peut etre optimisé...
Voila le problème:
j'utilise une connexion socket udp pour recevoir une image:
byte[] buffer = new byte[taille_buffer];
DatagramPacket p1 = new DatagramPacket(buffer, taille_buffer);
DatagramSocket s1 = new DatagramSocket(1234, address);
byte[] stockage = new byte[w * h * 3];
// w largueur de l'image
// h hauteur
// multiplie par 3, car l'image est codé par 3 byte bleu, rouge, vert et pas de alpha.
while ((k+1) * taille_buffer < w * h * 3) {
envoyer("Get_image" );//envoi une commande au serveur
s1.receive(p1);//recoit des données
for (int i = 0; i < buffer.length; i++) {
stockage[i + taille_buffer * k] = buffer[i];
//je stocke le Byte
}
k++;
}
//à la fin du while, j'ai un tableau de byte de taille w*h*3
BufferedImage bufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
int[] rgbs = new int[w * h];//maintenant je crée un bufferedimage et un tableau de byte stockant les pixels sous format int pour charger le bufferimage
for (int i = 0; i < w * h; i++) {
rgbs[i] = ((((stockage[3 * i] & 0xFF) << 8) | stockage[3 * i + 1] & 0xFF) << 8) | stockage[3 * i + 2] & 0xFF;
}
bufferedImage.setRGB(0, 0, w, h, rgbs, 0, w);// je charge le tableau de int
jLabel6.setIcon(new ImageIcon(bufferedImage));puis à la fin je l'affiche
J'ai besoin d'aide:
Y a t il une fonction de jLabel qui peut charger "stockage" directement, un tableau de pixel avec des byte bleu rouge vert sans alpha
es ce que je dois utiliser ma convertion en int pour le tableau rgb[] directement sans utiliser byte stockage[]...(vérifiant que buffer.length est bien multiple de 3)