C#开发学习笔记:图片与字节的互转

1.C# WinForm中,图片与字节的互转

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("图片所在路径(只需要到文件夹不需要到具体图片文件)");
System.IO.FileInfo[] files = dir.GetFiles();
foreach (System.IO.FileInfo item in files)
{
	if (item.Name.EndsWith("png"))
	{
		System.IO.FileStream fs = item.Open(System.IO.FileMode.Open);
		//用一个字节数组将读取的图片流保存,然后关闭流解锁文件避免下次读取文件(程序未关闭)时报错
		byte[] imgByte = new byte[fs.Length];
		fs.Read(imgByte, 0, imgByte.Length);
		fs.Close();
		Image im = Bitmap.FromStream(new System.IO.MemoryStream(imgByte));//将流转为图片
		System.IO.MemoryStream ms = new System.IO.MemoryStream();
		im.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

		//将流转成字节
		byte[] bytes = new byte[ms.Length];
		//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
		ms.Seek(0, System.IO.SeekOrigin.Begin);
		ms.Read(bytes, 0, bytes.Length);

		System.IO.Stream ms1 = new System.IO.MemoryStream(bytes);
		System.Drawing.Image imm = System.Drawing.Image.FromStream(ms1);
		imm.Save(@"保存路径\图片名");
	}

}

2.WPF中字节转为图片,并赋值给Image控件

//获取图片的字节
byte[] image_byte = (byte[])dr["IMAGE_BYTE"];

BitmapImage bitImage = new BitmapImage();
//BitmapImage需要进行初始化,否则像Height、Width等属性会引发异常
bitImage.BeginInit();//开始初始化
bitImage.StreamSource = new MemoryStream(image_byte);
bitImage.EndInit();//结束初始化


Image i = new Image();
i.Source = bitImage;
//设置图片的Margin
Thickness tk = new Thickness(Convert.ToDouble(position_x), Convert.ToDouble(position_y), 0, 0);
i.Margin = tk;
w.Canvas1.Children.Add(i);
Panel.SetZIndex(i, 11);//设置元素的显示顺序(层级)数值越大,层级越高;显示优先级:高层级>低层级

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值