Как я могу скопировать данные пикселя с растрового изображения с отрицательным шагом?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу скопировать данные пикселя с растрового изображения с отрицательным шагом?

Сообщение Anonymous »

Я искал самый быстрый способ преобразовать растровый карту в 8bpp.
Я нашел 2 способа: < /p>

1. < /strong> < /p>

Код: Выделить всё

        public static System.Drawing.Image ConvertTo8bpp(Bitmap oldbmp)
{
using (var ms = new MemoryStream())
{
oldbmp.Save(ms, ImageFormat.Gif);
ms.Position = 0;
return System.Drawing.Image.FromStream(ms);
}
}
2. [/b] http://www.wischik.com/lu/programmer/1bpp.htmlобразное. 2 дает мне растровое изображение с отрицательным шагом, когда я пытаюсь заблокировать и копировать данные в байтовый массив, я получаю исключение: пытался прочитать или написать защищенную память. Это часто указывает на то, что другая память повреждена. < /Em> < /p>

BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);

this.stride = bmpData.Stride;
this.bytesPerPixel = GetBytesPerPixel(bmp.PixelFormat);
int length = bmpData.Stride * bmp.Height;
if (this.stride < 0)
this.data = new byte[-length];
else
this.data = new byte[length];
Marshal.Copy(bmpData.Scan0, data, 0, length);

//Unlock the bitmap
bmp.UnlockBits(bmpData);
< /code>

Как я могу сделать 2 < /strong> дает положительный шаг? Или как я могу копировать данные, используя кувшины отрицательного шага?>

Подробнее здесь: https://stackoverflow.com/questions/683 ... ive-stride
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»