Ich versuche ein Bild zu manipulieren, ich bin ziemlich neu, wenn es um Bitmaps geht und Bilder so leer mit meinem auf meine Frage und Code. Ich initialisiere ein Byte-Array, um Bgr24 Pixeldaten zu speichern, damit ich es in ein BitmapSource-Objekt übergeben kann. Aber mein Pixel-Array hat nicht die richtige Größe "Ich denke".Probleme mit BitmapSource-Objekt in C#
Die letzte Zeile des Codes ist eigentlich, wo mein Problem ist, der Parameter "Pixel" wirft mir den folgenden Fehler "System.ArgumentException wurde nicht behandelt Wert nicht in den erwarteten Bereich fallen."
ich initialisieren diese Variablen
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);
Ich verstehe, dass ich nicht richtig die Pixel-Array nach oben setze. Irgendwelche Gedanken?
Was ist 'imageSize' und warum Sie, dass anstelle von' width' und 'height' verwenden? –
Ich habe es hinzugefügt, es in meiner ersten Kopie/Paste verpasst. imageSize = 100; –
Ich vermute, dass Ihre Mathematik inkorrekt ist. Überlegen Sie, was "[i * imageSize * 3 + j + 1]" für eine bestimmte "i"/"j" -Kombination gleich ist. Dann bedenke, was "[i * imageSize * 3 + j + 0]" gleich ist, wenn "j" um eins höher ist. –