我可以在Silverlight中从BitmapImage获取字节吗?我试图在Silverlight和WCF服务之间来回传递一些图像。如果可能,我想传递System.Windows.Media.Imaging.BitmapImage,因为这意味着客户端不必进行任何转换。然而,在某些时候我需要将此图像存储在数据库中,这意味着图像表示必须能够与byte[]相互转换。我可以通过将数组读入MemoryStream并使用BitmapImage.SetSource()从byte[]创建BitmapImage。但我似乎无法找到另一种转换方式——从BitmapImage到byte[]。我错过了一些明显的东西吗?如果有帮助,转换代码可以在服务器上运行,即它不需要是Silverlight安全的。使用这个:publicbyte[]GetBytes(BitmapImagebi){WriteableBitmapwbm=newWriteableBitmap(bi);返回wbm.ToByteArray();}wherepublicstaticbyte[]ToByteArray(thisWriteableBitmapbmp){//初始化缓冲区intw=bmp.PixelWidth;inth=bmp.PixelHeight;int[]p=bmp.Pixels;intlen=p.Length;byte[]result=newbyte[4*w*h];//将像素复制到缓冲区for(inti=0,j=0;i>24);//结果[j+1]=(byte)(color>>16);//R结果[j+2]=(字节)(颜色>>8);//G结果[j+3]=(byte)(color);//B}返回结果;}我有同样的问题。我发现ImageTools库可以使工作更轻松。获取库并引用它然后使用(varwritingStream=newMemoryStream()){varencoder=newPngEncoder{IsWritingUncompressed=false};encoder.Encode(bitmapImageInstance,writingStream);//用数组做点什么}尝试使用CopyPixels。您可以将位图数据复制到字节数组。但是,老实说,我不确定像素的格式是什么……这可能取决于最初加载的图像类型。以上是C#学习教程:CanIgetbytesfromBitmapImageinSilverlight?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
