基于.net 的oracleOracle数据库图片保存,byte数据和image数据的转换
来源:互联网 发布:3dmax软件简介 编辑:程序博客网 时间:2024/05/20 01:39
最近需要用Oracle数据库保存图片,于是进行了一下研究。其实不管是文档、图片、还是视频,这些都属于非结构化数据,保存的关键在转换类型,下面进行总结。
1.在数据库表中建立一个LOB类型的字段,这种类型是专门用来保存图片等非结构化数据的,Oracle和SQL Server等大型数据库都支持这样的类型。
具体类型可能会有若干种,Oralcle支持BLOB、CLOB、NCLOB、BFILE,BLOB是二进制型大对象,CLOB和NCLOB都是字符型大对象,BFILE只存储文件指针,实际的文件是存储在文件系统中的。一般采用BLOB,它支持最大4G的数据。
2.在程序中将图片转化成字节数组。例如:
MemoryStream mstream = new MemoryStream();
image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageData = mstream.ToArray();
3.用SQL语句进行操作,方法和普通字段类似,只是在要指定字段内容的时候采用参数,将字节数组通过参数传入。例如:
CREATE TABLE table(ID NUMBER(3), PHOTO BLOB)
INSERT INTO table(ID,PHOTO) VALUES('1', :Photo)
:PHOTO是参数,注意这是在Oracle中的写法,在SQL Server中应该是@PHOTO。
4.取出图像的时候只要将object强制转化为字节数组,再转化为图像即可。例如:
MemoryStream mstream = new MemoryStream((byte[])imageData);
Image image=Image.FromStream(mstream);
其实对BLOB的操作也可以利用.Net的相关类库,不过我没用过,在此不表。
1.将Image图像文件存入到数据库中
我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.要这里有关数据的操作略写,我将一些代码段写成方法,方便直接调用.
//根据文件名(完全路径)
public byte[] SetImageToByteArray(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);
int streamLength = (int)fs.Length;
byte[] image = new byte[streamLength];
fs.Read(image, 0, streamLength);
fs.Close();
return image;
}
//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public byte[] SetImageToByteArray(FileUpload FileUpload1)
{
Stream stream = FileUpload1.PostedFile.InputStream;
byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];
stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);
stream.Close();
return photo;
}
2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件
//要使用SqlDataReader要加载using System.Da
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}
//将byte[]转换成Image图像类型
//加载以下命名空间using System.Drawing;/using System.IO;
using System.Da
public Image SetByteToImage(byte[] mybyte)
{
Image image;
MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);
image = Image.FromStream(mymemorystream);
return image;
}
- 基于.net 的oracleOracle数据库图片保存,byte数据和image数据的转换
- Image和byte[]的转换
- 添加图片 image和byte[] 的相互转换
- word 文档的保存数据及读取,类似图片,数据库设置图片格式(image)
- Image 和byte[]之间的转换
- string image 和 byte的互相转换
- c#获取网络图片 Image和byte[]数组的相互转换
- Java File和byte数据之间的转换
- 保存图片数据的设计
- byte[]与Image Image与 byte[] 之间的转换
- 图片和byte[]的互相转换
- C# 图片和byte[]的互相转换
- 图片和byte的相互转换
- 保存在数据中image字段的图片文件显示出来
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。并读取出来。
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。
- 图片保存到数据及从数据库读出(winform,c# 和vb.net)
- Byte[]和byte[]的转换
- oracle 学习笔记 1
- jquery 事件
- android 安装apk文件
- [设计模式笔记]一. 创建型模式--3.Abstract Factory模式(一)
- 唐骏在北邮的演讲~爆笑~不愧是年薪十亿的人才
- 基于.net 的oracleOracle数据库图片保存,byte数据和image数据的转换
- iOS应用崩溃日志分析
- (原创)3.1 附加属性原理
- Debian+Pure-ftpd+MySQL+User manager for PureFTPd
- P06分组的背包问题
- Eclipse中怎样去修改复制上下行代码的快捷键
- jquery 动画
- jifengresult
- 华为上机题 求简单四则运算