1.图片转为byte[]
//获取图片
public static void findImage()
{
Image image = Image.FromFile("D:\\test1.jpg");//获取该路劲下的图片test1.jpg
ImageToBytes(image);//调用ImageToByte()
}
//图片转byte[]
public static byte[] ImageToBytes(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);
}
byte[] buffer = new byte[ms.Length];
//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
ms.Seek(0, SeekOrigin.Begin); //将当前流中的位置设置为指定值
ms.Read(buffer, 0, buffer.Length);//读出数据
//rgb数据
CreateImageFromBytes(buffer);
return buffer;
}
}
2.byte[]转为图片
// Byte[]转图片
public static Image BytesToImage(byte[] buffer)
{
MemoryStream ms = new MemoryStream(buffer);
Image image = Image.FromStream(ms);
ms.Close();//关闭
ms.Dispose();//释放
return image;
}
3.Byte[]转图片并保存
public static string CreateImageFromBytes(byte[] buffer)
{
string file = "test1";
Image image = BytesToImage(buffer);
ImageFormat format = image.RawFormat;
if (format.Equals(ImageFormat.Jpeg))
{
file += ".jpeg";
}
else if (format.Equals(ImageFormat.Png))
{
file += ".png";
}
else if (format.Equals(ImageFormat.Bmp))
{
file += ".bmp";
}
else if (format.Equals(ImageFormat.Gif))
{
file += ".gif";
}
else if (format.Equals(ImageFormat.Icon))
{
file += ".icon";
}
System.IO.FileInfo info = new System.IO.FileInfo(file);
System.IO.Directory.CreateDirectory(info.Directory.FullName);
File.WriteAllBytes(file, buffer);
return file;
}
4.有rgb数据直接画图
//reg数据画图
public static Bitmap CommondRgb(byte[] image)
{
int w = 1280, h = 1024;//图片大小设置
//int w= 50,int h= 50;
int rgbNum = 0;
Bitmap bmp = new Bitmap(w, h);
for (int y = 0; y < h; y++)//左上到右下画图
{
for (int x = 0; x < w; x++)
{
if (rgbNum < sd.Length - 4 )
{
bmp.SetPixel(x, y, Color.FromArgb(255, sd[rgbNum + 2], sd[rgbNum + 1], sd[rgbNum]));//参数(透明度,r,g,b)
rgbNum += 4;//image[]为四个一组的rgb数据
}
else//像素点不够1280*1024的话补白
{
bmp.SetPixel(x, y, Color.FromArgb(255, 255, 255, 255));
}
}
}
//设置图片保存路劲为程序运行路劲下的picture文件夹,名称为生成时间,格式为bmp
//bmp.Save(Application.StartupPath + "\\Picture\\" + DateTime.Now.Ticks.ToString() + ".bmp", ImageFormat.Bmp);
return bmp;
//string path = Application.StartupPath + "\\picture\\";//获取程序运行路径下的picture文件夹
//string dataTime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");//获取当前那时间
//string dataTime = DateTime.Now.Ticks.ToString();//获取当前时间
//string picName = dataTime + ".bmp";//设置文件名
//bmp.Save(path + picName, ImageFormat.Bmp);//保存为bmp格式
//bmp.Save("D:\\picture.png", ImageFormat.Png);//保存为png格式
}