Mein Ziel ist es, meine 256x256 Pixel große Bitmap zu laden und jedem Pixel entweder einen weißen oder schwarzen Farbwert zuzuweisen, abhängig davon, ob der tatsächliche Wert unter einen bestimmten Schwellenwert fällt.BitmapData manipulieren, nur 1/3 wird geändert
Problem ist, nur 1/3 der Breite der Bitmap hat die neuen Pixeldaten, obwohl die innere for-Anweisung über die gesamte Breite iteriert.
unsafe
{
BitmapData bitmapData = bitmap.LockBits(new Rectangle(0,0, 256, 256), ImageLockMode.ReadWrite, bitmap.PixelFormat);
for (int j = 0; j < bitmapData.Height; j++)
{
byte* row = (byte*)bitmapData.Scan0 + (j * bitmapData.Stride);
for (int k = 0; k < bitmapData.Width; k++)
{
if (row[k] <= TresholdFilter)
row[k] = 0;
if (row[k] > 0)
row[k] = 255;
}
}
bitmap.UnlockBits(bitmapData);
}
Was ist der Wert von 'ThresholdFilter'? – erikscandola
Es ist ein Int32, mit einem Bereich 0-255 – Yama
Es ist möglich, dass in einigen Fällen, in Ihrer 'Zeile [k]' bleibt der Anfangswert? Hast du es mit einem anderen Bild versucht? – erikscandola