四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2257|回复: 0
打印 上一主题 下一主题

C# byte数组与Image的相互转换

[复制链接]
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    跳转到指定楼层
    楼主
    发表于 2016-11-3 11:46:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    原文地址:http://www.cnblogs.com/luxiaoxun/p/3378416.html

    功能需求:
    1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。
    2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。
    3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。

    这里的Image是System.Drawing.Image。

             //Get an image from file
            Image image = Image.FromFile("D:\\test.jpg");
            Bitmap bitmap = new Bitmap("D:\\test.jpg");
    以下三个函数分别实现了上述三个需求:


    1. using System;
    2. using System.Collections.Generic;
    3. using System.Drawing;
    4. using System.Drawing.Imaging;
    5. using System.IO;
    6. using System.Linq;
    7. using System.Text;

    8. namespace NetUtilityLib
    9. {
    10.     public static class ImageHelper
    11.     {
    12.         /// <summary>
    13.         /// Convert Image to Byte[]
    14.         /// </summary>
    15.         /// <param name="image"></param>
    16.         /// <returns></returns>
    17.         public static byte[] ImageToBytes(Image image)
    18.         {
    19.             ImageFormat format = image.RawFormat;
    20.             using (MemoryStream ms = new MemoryStream())
    21.             {
    22.                 if (format.Equals(ImageFormat.Jpeg))
    23.                 {
    24.                     image.Save(ms, ImageFormat.Jpeg);
    25.                 }
    26.                 else if (format.Equals(ImageFormat.Png))
    27.                 {
    28.                     image.Save(ms, ImageFormat.Png);
    29.                 }
    30.                 else if (format.Equals(ImageFormat.Bmp))
    31.                 {
    32.                     image.Save(ms, ImageFormat.Bmp);
    33.                 }
    34.                 else if (format.Equals(ImageFormat.Gif))
    35.                 {
    36.                     image.Save(ms, ImageFormat.Gif);
    37.                 }
    38.                 else if (format.Equals(ImageFormat.Icon))
    39.                 {
    40.                     image.Save(ms, ImageFormat.Icon);
    41.                 }
    42.                 byte[] buffer = new byte[ms.Length];
    43.                 //Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
    44.                 ms.Seek(0, SeekOrigin.Begin);
    45.                 ms.Read(buffer, 0, buffer.Length);
    46.                 return buffer;
    47.             }
    48.         }

    49.         /// <summary>
    50.         /// Convert Byte[] to Image
    51.         /// </summary>
    52.         /// <param name="buffer"></param>
    53.         /// <returns></returns>
    54.         public static Image BytesToImage(byte[] buffer)
    55.         {
    56.             MemoryStream ms = new MemoryStream(buffer);
    57.             Image image = System.Drawing.Image.FromStream(ms);
    58.             return image;
    59.         }

    60.         /// <summary>
    61.         /// Convert Byte[] to a picture and Store it in file
    62.         /// </summary>
    63.         /// <param name="fileName"></param>
    64.         /// <param name="buffer"></param>
    65.         /// <returns></returns>
    66.         public static string CreateImageFromBytes(string fileName, byte[] buffer)
    67.         {
    68.             string file = fileName;
    69.             Image image = BytesToImage(buffer);
    70.             ImageFormat format = image.RawFormat;
    71.             if (format.Equals(ImageFormat.Jpeg))
    72.             {
    73.                 file += ".jpeg";
    74.             }
    75.             else if (format.Equals(ImageFormat.Png))
    76.             {
    77.                 file += ".png";
    78.             }
    79.             else if (format.Equals(ImageFormat.Bmp))
    80.             {
    81.                 file += ".bmp";
    82.             }
    83.             else if (format.Equals(ImageFormat.Gif))
    84.             {
    85.                 file += ".gif";
    86.             }
    87.             else if (format.Equals(ImageFormat.Icon))
    88.             {
    89.                 file += ".icon";
    90.             }
    91.             System.IO.FileInfo info = new System.IO.FileInfo(file);
    92.             System.IO.Directory.CreateDirectory(info.Directory.FullName);
    93.             File.WriteAllBytes(file, buffer);
    94.             return file;
    95.         }
    96.     }
    97. }
    复制代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-17 14:05 , Processed in 1.078125 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表