C# byte数组与Image相互转换的方法
功能需求:
1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。
2、把从数据库读取的byte数组转换为image对象,赋值给相应的控件显示。
3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。
这里的image是system.drawing.image。
以下三个函数分别实现了上述三个需求:
// convert image to byte[]
private byte[] imagetobyte(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);
return buffer;
}
}
// convert byte[] to image
private image bytetoimage(byte[] buffer)
{
memorystream ms = new memorystream(buffer);
image image = system.drawing.image.fromstream(ms);
return image;
}
// convert byte[] to a picture
private string createimagefrombyte(string filename, byte[] buffer)
{
string file = filename; //文件名(不包含扩展名)
image image = bytetoimage(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";
}
//文件路径目录必须存在,否则先用directory创建目录
file.writeallbytes(file, buffer);
return file;
}
上一篇: 深入了解Java 脚本化api编程
下一篇: java 中的封装介绍及使用方法