Пиксельные значения оказываются отрицательными - PullRequest
1 голос
/ 18 января 2010

Я хочу сохранить записываемый образ в 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, чтобы увидеть, есть ли какое-то смещение, но это работает только для черных пикселей, оно падает на белом.

Ответы [ 2 ]

4 голосов
/ 18 января 2010

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

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

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

Также смотрите этот ответ .

0 голосов
/ 18 января 2010

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

...