1

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 を追加しようとしましたが、これは黒いピクセルでのみ機能し、白いピクセルでクラッシュします。

4

2 に答える 2

4

The pixel is black and should have been 0

The pixel is indeed black. -16777216 is 0xFF000000. The FF is the Alpha channel.

カラーはどのタイプを使っていますか?

この回答も参照してください。

于 2010-01-18T09:35:33.737 に答える
0

ラップオーバーする符号付き整数値のように聞こえます。すべてのビットが設定された符号付き整数値は負です。たとえば、符号付きの場合、0xFFFF は 16 ビットが設定されていることを意味し、上位ビットは下位 15 ビットが負の値を表すことを示します。

于 2010-01-18T10:09:06.103 に答える