2009-06-12 4 views
1

jpegファイルとして保存する必要があるピクセルピクセルデータの配列があります。私が見つけた何から私は イメージオブジェクトへのushort配列

Image.Save(path, ImageFormat.Jpeg); 

を使用することにより、これを行うことができますが、私は、ImageオブジェクトにUSHORTデータを取得する方法がわかりません。バイト配列でこれを行う方法を見つけましたが、ushortではありません。 私はこれを理解しようと多くの時間を費やしています。だから、私は巨大なStackOverflowに頼みます、どうすればいいですか?

編集: 申し訳ありませんが、ushortsは16ビットのグレースケール値です。

+0

データがushort(0-256または16ビットの色深度)にある理由は明確ではありません。私はあなたの答えを含んでいるかもしれないし、そうでないかもしれないので、BitConverterを指し示すだろう。 – Talljoe

+0

"ushortピクセルデータの配列"は単独で何も意味しません。配列のデータ形式は何ですか? –

答えて

2

実際にはBitmapを作成し、それにピクセルを描画して後で保存する必要があると思います。このような

何か:

var bitmap = new Bitmap(sizeX, sizeY, Imaging.PixelFormat.Format16bppGrayScale) 

for (y = 0; ...) 
for (x = 0; ...) 
{ 
    bitmap.SetPixel(x, y, color information from ushort array); 
} 

bitmap.Save("filename.jpg", ImageFormat.Jpeg); 

注私は色の構造体への16ビットグレースケールの色情報を取得する方法がわかりません。

+0

私が同意すると、生のピクセルデータを(何らかのフォーマットで)取得する場合、最も単純なことはピクセル単位でビットマップを作成することです。 – TheSean

+0

これは素晴らしいですが、ビットマップに_ushort_データを取得する方法の質問には答えません。 –

+0

これは私がやったことであり、うまくいくようです。しかし、ちょうどjpegが16ビットグレースケールをサポートしていないので、私はPixelFormat.Format24bppRgbを使い、r、g、bを同じ値に設定しています。 –

1

Imageから継承したBitmapクラスを使用したいと思います。 This MSDNの参考資料が参考になる場合があります。

+0

これは、ビットマップオブジェクトにushortデータを取得する方法を教えてくれません。 –

+0

私はBitmap.SetPixel()が明白であると仮定しました。 –

+0

この場合も、ビットマップオブジェクトにushortデータを取得する方法はわかりません。 SetPixelsでは、Ushort値ではなく、Colorオブジェクトが必要です。私の質問では、イメージ(BitmapはImageから派生したもの)を構築する方法を知っているので、ushortデータではない。 –