Créer un tampon d'image à partir des valeurs de pixels rvb
J'ai un tableau d'entiers de pixels RVB qui ressemble à quelque chose comme:
pixels[0] = <rgb-value of pixel(0,0)>
pixels[1] = <rgb-value of pixel(1,0)>
pixels[2] = <rgb-value of pixel(2,0)>
pixels[3] = <rgb-value of pixel(0,1)>
...etc...
Et je suis en train de créer un BufferedImage. J'ai essayé le suivant:
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
img.getRaster().setPixels(0, 0, width, height, pixels);
Mais l'image qui en résulte a des problèmes avec les bandes de couleur. L'image n'est pas claire et il y a des diagonales et des lignes horizontales à travers.
Quelle est la bonne méthode pour initialiser l'image avec les valeurs rvb?
EDIT:
Voici ce que mon image ressemble
grâce,
Jeff
setDataElements(...) fonctionne très bien pour moi. Votre int les valeurs doivent être tort. Publier vos SSCCE montrant le problème.
Je pense que vous avez raison et que mon sous-jacents valeurs de pixel peut-être tort. Je vais regarder cela d'un peu plus et puis après retour.
Ça ressemble à un mauvais alignement des données. Vos pixels 32 bits sont entiers, mais un nombre entier RBG format de 24 bits. Vous devriez essayer de créer un pixel struct avec 3 octets en elle et en passant un tableau de personnes de plus de place.
merci, je vais essayer.
double possible de int tableau de BufferedImage
Je pense que vous avez raison et que mon sous-jacents valeurs de pixel peut-être tort. Je vais regarder cela d'un peu plus et puis après retour.
Ça ressemble à un mauvais alignement des données. Vos pixels 32 bits sont entiers, mais un nombre entier RBG format de 24 bits. Vous devriez essayer de créer un pixel struct avec 3 octets en elle et en passant un tableau de personnes de plus de place.
merci, je vais essayer.
double possible de int tableau de BufferedImage
OriginalL'auteur Jeff Storey | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Essayer
setDataElements
au lieu desetPixels
.Une autre option est pour l'image à partager la table au lieu de la copie (voir cette réponse pour un exemple.)
J'ai essayé setDataElements, mais j'ai toujours le même problème. J'ai ajouté une image de ce que je vois. Peut-être qu'il va donner un indice de ce qui pourrait être la cause.
OriginalL'auteur finnw
Pas sûr de savoir comment faire avec un seul tableau de la valeur. Je crois que vous avez besoin de trois valeurs de tableau pour spécifier la couleur lorsque vous utilisez TYPE_INT_RGB:
Brasseur-Davis, on pourrait penser que TYPE_INT_RGB utilise un seul int par unité de pixel, cependant cela ne semble pas être le cas lors de l'utilisation de la setPixel(...) la méthode, qui est pourquoi la question a été posée. J'ai fourni une solution qui montre comment utiliser la setPixel(...) de la méthode. Cela dit, la meilleure réponse est d'utiliser le setDataElements(...) de la méthode.
OriginalL'auteur camickr
La raison vous ne pouvez pas obtenir la bonne image, c'est que ces pixels inclure les couleurs rvb, afin de définir chaque pix-vous le plus faire la prochaine
mot2 est un nombre entier de pixels col est la position de chaque pix de ligne et de la même, et 1,1 est la taille de chaque pixel.
OriginalL'auteur jesus del bosque