是否可以将数组作为一个整体保存WriteableBitmap
到磁盘上的文件中,并作为一个整体进行检索?
问问题
1057 次
2 回答
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有一个将图像保存到文件的示例。
于 2013-05-28T09:58:27.093 回答
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.
与从文件中读取类似。
升级版。添加了具有位图大小的标题。没有它们,就很难从单字节数组中读取单独的位图。
于 2013-05-28T10:23:14.713 回答