当前位置: 移动技术网 > IT编程>开发语言>c# > C# byte数组与Image相互转换的方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
功能需求: 1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。 2、把从数据库读取的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;
        }

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网