将WriteableBitmap数组保存到文件

时间:2013-05-28 09:49:29

标签: c# .net windows-8 writeablebitmap

是否可以将WriteableBitmap数组保存到整个磁盘上的文件中,并将其作为整体检索?

2 个答案:

答案 0 :(得分:2)

您需要在保存之前将WriteableBitmap的输出编码为识别的图像格式(如PNG或JPG),否则它只是文件中的字节。看看支持PNG,JPG,BMP和GIF格式的ImageTools(http://imagetools.codeplex.com/)。有一个示例可以将图像保存到http://imagetools.codeplex.com/wikipage?title=Write%20the%20content%20of%20a%20canvas%20to%20a%20file&referringTitle=Home的文件中。

答案 1 :(得分:0)

您可以从WritableBitmap检索字节数组。并且可以保存该数组并将其读取到文件中。像这样的东西;

WritableBitmap[] bitmaps;

// Compute total size of bitmaps in bytes + size of metadata headers
int totalSize = bitmaps.Sum(b => b.BackBufferStride * b.Height) + bitmaps.Length * 4;

var bitmapData = new byte[totalSize];

for (int i = 0, offset = 0; i < bitmaps.Length; i++)
{
    bitmaps[i].Lock();

    // Apppend header with bitmap size
    int size = bitmaps[i].BackBufferStride * bitmaps[i].Height;
    byte[] sizeBytes = BitConverter.GetBytes(size);
    Buffer.BlockCopy(sizeBytes, 0, bitmapData, offset, 4);

    offset += 4;

    // Append bitmap content
    Marshal.Copy(bitmaps[i].BackBuffer, bitmapData, offset, size);

    offset += size;

    bitmaps[i].Unlock();
}

// Save bitmapDat to file.

类似于从文件中读取。

<强> UPD 即可。添加了包含位图大小的标头。没有它们就很难从单字节数组中读取单独的位图。