0

PixelFormatWin8 App Store で、ストリームが与えられた場合、そのストリームから画像を取得するにはどうすればよいですか? 私は取得することしかできませんbyte array, width, height, strideが、ある種のを作成するには、ピクセル形式のタイプ(ピクセルあたりのビット数、rgba32など)も必要ですBitmapSource

//Copy photo from camera to stream
var fPhotoStream = new InMemoryRandomAccessStream();
await mediaCaptureMgr.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), fPhotoStream);
await fPhotoStream.FlushAsync();
fPhotoStream.Seek(0);

//Convert stream to byte array
byte[] bytes = new byte[fPhotoStream.Size];
await fPhotoStream.ReadAsync(bytes.AsBuffer(), (uint)fPhotoStream.Size, InputStreamOptions.None); 

//Get pointer to byte array
GCHandle pinnedArray = GCHandle.Alloc(bytes, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();

//Get image width, height, stride
BitmapImage bmp = new BitmapImage();
bmp.SetSource(fPhotoStream);            
int imgWidth = bmp.PixelWidth;
int imgHeight = bmp.PixelHeight;
int stride = bmp.Width * 4;

//But how to get image pixel format?
int pixelFormat = ??????

それをしてもいいですか?

4

1 に答える 1

0

BitmapDecoder を使用して PixelFormat 情報を取得できることがわかりました: http://msdn.microsoft.com/en-us/library/windows/apps/jj709939.aspx

于 2013-10-08T11:22:31.143 に答える