Значения пикселей становятся отрицательными

Я хочу сохранить доступное для записи изображение в Silverlight на диск.

Я нашел этот учебник: http://kodierer.blogspot.com/2009/11/convert-encode-and-decode-silverlight.html и основали свой код на методе EncodeJpeg.

Но на:

pixelsForJpeg[0][x, y] = (byte)(color >> 16); 

это вызывает исключение: арифметическая операция привела к переполнению. При ближайшем рассмотрении значение цвета -16 777 216. Пиксель черный и должен быть равен 0. При переключении на белый пиксель значение равно -1.

Я попытался добавить 16 777 216, чтобы увидеть, есть ли какое-то смещение, но это работает только для черных пикселей, оно вылетает на белом.


person eflles    schedule 18.01.2010    source источник


Ответы (2)


Пиксель черный и должен быть 0

Пиксель действительно черный. -16777216 - это 0xFF000000. FF - это альфа-канал.

Какой шрифт вы используете для цвета?

См. Также этот ответ.

person Jonas Elfström    schedule 18.01.2010

Похоже на целое число со знаком, которое оборачивается. Целочисленное значение со знаком со всеми установленными битами отрицательно. Например, 0xFFFF со знаком означает, что установлено 16 бит, а старший бит указывает, что младшие 15 бит описывают отрицательное значение.

person Johann Gerell    schedule 18.01.2010