J'essaie de manipuler une image, je suis assez nouveau en ce qui concerne les bitmaps et les images si nues avec mon sur mes questions et mon code. J'initialise un tableau d'octets pour contenir les données de pixels Bgr24 afin que je puisse le transmettre dans un objet BitmapSource. Mais mon tableau de pixels n'est pas la taille correcte "je pense".J'ai des problèmes avec l'objet BitmapSource en C#
La dernière ligne de code est en fait où mon problème est, le paramètre "pixels" me jette l'erreur suivante "System.ArgumentException was unshandled La valeur ne tombe pas dans la fourchette attendue."
J'initialize ces variables
int imageSize = 100;
double dpi = 96;
int width = 128;
int height = 128;
byte[] pixels = new byte[width * height * 3];
//Create my image....
for (int i = 0; i < imageSize; i++)
{
for (int j = 0; j < imageSize; j++)
{
int ct = myImage[i, j];
pixels[i * imageSize * 3 + j + 0] = (byte)((ct % 16) * 14);
pixels[i * imageSize * 3 + j + 1] = (byte)((ct % 32) * 7);
pixels[i * imageSize * 3 + j + 2] = (byte)((ct % 128) * 2);
}
}//end for
//Create the bitmap
BitmapSource bmpSource = BitmapSource.Create(width, height, dpi, dpi, PixelFormats.Bgr24, null, pixels, width);
Je comprends que je ne suis pas correctement réglé le tableau pixels. Des pensées?
Qu'est-ce 'imageSize' et pourquoi utilisez-vous qu'au lieu de' 'width' et height'? –
Je l'ai ajouté, manqué dans mon copier/coller initial. imageSize = 100; –
Je suppose que vos maths sont incorrectes. Considérons ce que '[i * imageSize * 3 + j + 1]' est égal à pour toute combinaison particulière de 'i' /' j'. Considérons ensuite ce que '[i * imageSize * 3 + j + 0]' est égal à quand 'j' est un plus haut. –