C#byte配列とImageの相互変換
9757 ワード
主な機能:
1.画像をbyte[]配列に変換してデータベースに保存
2.byte[]配列をデータベースから読み出し、imageピクチャに変換します.コントロールまたはディスクに保存
コード:
1.画像変換byte[]:
2.byte[]配列をimageオブジェクトに変換するには:
3.ファイルに保存する:
1.画像をbyte[]配列に変換してデータベースに保存
2.byte[]配列をデータベースから読み出し、imageピクチャに変換します.コントロールまたはディスクに保存
Image image = Image.FromFile("D:\\test.jpg");
Bitmap bitmap = new Bitmap("D:\\test.jpg");
コード:
1.画像変換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);
return buffer;
}
}
2.byte[]配列をimageオブジェクトに変換するには:
public static Image BytesToImage(byte[] buffer)
{
MemoryStream ms = new MemoryStream(buffer);
Image image = System.Drawing.Image.FromStream(ms);
return image;
}
3.ファイルに保存する:
public static string CreateImageFromBytes(string fileName, byte[] buffer)
{
string file = fileName;
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;
}