none
wp7 bitmapmage和byte[]相互转化的问题 RRS feed

  • 问题

  •   byte[] data;
                // Get an Image Stream
                using (MemoryStream ms = new MemoryStream())
                {

                    WriteableBitmap btmMap = new WriteableBitmap(bitmapImage);
                   
                    // write an image into the stream
                 
                    Extensions.SaveJpeg(btmMap, ms,
                        bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);

                    // reset the stream pointer to the beginning
                    ms.Seek(0, 0);
                    //read the stream into a byte array
                    data = new byte[ms.Length];
                    ms.Read(data, 0, data.Length);
                }
                //data now holds the bytes of the image
                return data;

    这是把bitmapimage转换成byte的方法,而且转换也成功了

     

            public  BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
            {
                //WriteableBitmap wb=new
                BitmapImage bitmapImage = new BitmapImage();
                MemoryStream ms = new MemoryStream(byteArray);
                bitmapImage.SetSource(ms);
                return bitmapImage;
            }

    这是把byte转换成bitmapimage的方法

    但在            bitmapImage.SetSource(ms);
    偶尔能成功偶尔会报异常,求解

    2011年7月9日 3:15

答案

全部回复

  •   bitmapImage.SetSource(ms); 报的异常为unspecified error
    2011年7月9日 3:22
  • 顶你一下先


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    • 已标记为答案 Never Case 2011年7月9日 6:20
    • 取消答案标记 Never Case 2011年7月9日 6:20
    2011年7月9日 4:03
    版主
  • 无法从异常中分析出原因,提供Stream转换为BitmapImage的函数,请参考。

    其中MarsImage为XAML中Image控件。

    private void ShowImage(Stream imageStream, long imageSize)
    {
        BinaryReader br = new BinaryReader(imageStream);
        byte[] ImageBytes = new byte[imageSize];
        br.Read(ImageBytes, 0, ImageBytes.Length);
        MemoryStream msa = new MemoryStream(ImageBytes);

        Deployment.Current.Dispatcher.BeginInvoke(delegate
        {

            BitmapImage imgsrc = new BitmapImage();
            imgsrc.SetSource(msa);
            MarsImage.Source = imgsrc;
        });
    }


    Cedar

    2011年7月9日 7:20
    版主
  • 你自己,已经找到问题了,我就把你的问题标记啦!

    以后你继续努力!加油!

     

    ========================================================

    自由-wp7 14:39:34
    问题解决了,呵,因为我对字节做了处理导致了传的字节不一样
    自由-wp7 14:39:40
    唉。。。真是纠结的问题。。
    天使坠 22:58:21

    天使坠 22:58:28
    解决就好!
    天使坠 22:58:35
    恩,在里面混混!

     


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年7月9日 15:17
    版主
  • 天使坠  23:17:01
    把你的标记为正确
    自由-wp7  23:17:23
    那个方法没错,错的是我转成的字节用system.text.encoding.utf8.gbytes做了处理了结果和用Extensions.SaveJpeg转的不一样就出错了,不过偶尔会正确是挺意外的
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年7月9日 15:20
    版主