目录
一、背景
最近在做东西,需要将图片转化成二进制代码,但是在网上找了很久都没有一个免费工具可以实现该功能,于是就自己利用c#和winform制作了一个能将图片和二进制代码互转的小程序。
二、功能设计
总述
该程序的功能就是将图片转换为相应的二进制代码形式,将图片对应的二进制代码转换成图片。
时序图
功能演示
1.打开程序>>上传图片
2.找到需要转换的图片>>打开
3.转换
4.下方文本框即为图片转换之后的二进制代码
5.切换功能>>二进制代码转图片
6.文本框中输入二进制代码
7.转换>>下方即为二进制代码转换之后的图片
三、技术实现
1.上传照片功能的代码实现
private void button2_Click(object sender, EventArgs e)
{
//选择照片
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false; //该值确定是否可以选择多个文件
dialog.Title = "请选择文件夹"; //窗体标题
dialog.Filter = "图片文件(*.jpg,*.png)|*.jpg;*.png"; //文件筛选
dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); //默认路径设置为我的电脑文件夹
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string file = dialog.FileName; //文件夹路径
string path = file.Substring(file.LastIndexOf("\\") + 1); //格式化处理,提取文件名
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //使图像拉伸或收缩,以适合PictureBox
this.pictureBox1.ImageLocation = file;
}
}
2.照片转换成二进制代码功能的代码实现
public static byte[] convertByte(Image image)
{
ImageFormat format = image.RawFormat;
using (MemoryStream ms = new MemoryStream())
{
if (format.Equals(ImageFormat.Jpeg))
{
image.Save(ms, ImageFormat.Jpeg);
}
else if (format.Equals(ImageFormat.Png))
{
image.Save(ms, ImageFormat.Png);
}
else if (format.Equals(ImageFormat.Bmp))
{
image.Save(ms, ImageFormat.Bmp);
}
else if (format.Equals(ImageFormat.Gif))
{
image.Save(ms, ImageFormat.Gif);
}
else if (format.Equals(ImageFormat.Icon))
{
image.Save(ms, ImageFormat.Icon);
}
else
{
image.Save(ms, ImageFormat.Jpeg);
}
byte[] buffer = new byte[ms.Length];
//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
ms.Seek(0, SeekOrigin.Begin);
ms.Read(buffer, 0, buffer.Length);
return buffer;
}
3.转换完成后二进制代码输出到文本框功能的代码实现
private void button1_Click(object sender, EventArgs e)
{
Image b = pictureBox1.Image;
string a = ImagHelper.ImgToBase64String(b);
richTextBox1.Text = a;
}
4.二进制代码转图片、图片输入到PictureBox功能的代码实现
private void button5_Click(object sender, EventArgs e)
{
var base64 = richTextBox2.Text;
base64 = base64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换
byte[] bytes = Convert.FromBase64String(base64);
MemoryStream memStream = new MemoryStream(bytes);
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;//使图像拉伸或收缩,以适合PictureBox
pictureBox2.Image = Image.FromStream(memStream);
}
四、资料下载
1.源码和发布后的可运行小程序稍后发在评论区。
2.部署的目标电脑不是必须安装Visio Studio,只安装.Net Core环境就行:windowsdesktop-runtime-3.1.15-win-x64.exe。