首页 > 编程语言 >C#中Byte[]数组、BitmapImage、BitmapSource互转

C#中Byte[]数组、BitmapImage、BitmapSource互转

时间:2022-11-18 01:22:06浏览次数:69  
标签:stream BitmapSource C# image BitmapImage 数组 互转 new byte

原文:https://blog.csdn.net/dap769815768/article/details/127105330?spm=1001.2014.3001.5502

1.byte数组转BitmapImage

常用的Byte数组转图像的方法如下:

        public BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
        {
            using (Stream stream = new MemoryStream(byteArray))
            {
                BitmapImage image = new BitmapImage();
                stream.Position = 0;
                image.BeginInit();
                image.CacheOption = BitmapCacheOption.OnLoad;
                image.StreamSource = stream;
                image.EndInit();
                image.Freeze();
                return image;
            }
        }

这个方法只能够转本身带有图像格式信息byte数组,不然就会报错,比如用如下数组进行转图操作:

image.Source = ByteArrayToBitmapImage(new byte[500*500]);

报错信息如下:

COMException: 无法找不到组件。 (异常来自 HRESULT:0x88982F50)

2.图片转byte数组。

方法较多,思路就是把图像读入到stream里面,将stream转换成Byte数组。

比如如下一种方式:

FileStream fs = new FileStream("test.jpg", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] imgBytes = br.ReadBytes((int)fs.Length);

或者:

        public byte[] ImageToByteArray(Bitmap image)
        {
            MemoryStream ms = new MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }

 

标签:stream,BitmapSource,C#,image,BitmapImage,数组,互转,new,byte
From: https://www.cnblogs.com/cdaniu/p/16901937.html

相关文章

  • SelectSortDoWhile
    packagecom.challenger;importcom.challenger.Util;publicclassSelectSortDoWhile{   publicstaticvoidmain(String[]args)   {       //define......
  • GL-Predicting the future 20221116
    Time2022.11.16WednesdayTopicPredictingthefuturewhatdoyouthinkthefuturewilllooklike?ourcitywillbemoreandmoreintelligent,Ourcitywillus......
  • 代码随想录day2---LeetCode977有序数组的平方&209长度最小的子数组&59螺旋矩阵II
    1.LeetCode977有序数组的平方题目链接给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,......
  • 2022-11-18 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • C++图书资源管理系统
    C++图书资源管理系统题目3:图书资源管理实现一个简单的图书资源管理系统,管理维护已有图书资源,图书资源有不同的类型,有一般图书,杂志,电子资源等。不同资源有不同的属性和操......
  • SelectSortWhile
    publicclassSelectSortWhile{   publicstaticvoidmain(String[]args)   {       //definearray       int[]arr={5,8,2,3,7,4,10,6,9,1};......
  • C/C++自助攒机系统
    C/C++自助攒机系统管理员可以录入如下几种硬件的价格、型号信息:CPU:主频、品牌、价格、图片硬盘:容量、品牌、价格显示器:尺寸、品牌、价格内存:品牌、型号、价格机......
  • C语言交通查询系统
    C语言交通查询系统数据结构实验周任务书1.设计目的:数据结构实验周课程设计旨在培养学生运用数据结构的相关知识和理论解决计算机建模的能力,具备良好的数据结构建模的思想......
  • LeetCode刷题记录.Day18
    实现strStr28.找出字符串中第一个匹配项的下标-力扣(LeetCode)classSolution{public://構造next前綴表voidgetNext(int*next,conststring&s){......
  • C语言运动会分数统计程序
    C语言运动会分数统计程序运动会分数统计程序的设计(2人)运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1…......