从数据库读取图片
C# 图片保存到数据库和从数据库读取图片并显示
C# 图片保存到数据库和从数据库读取图片并显示图片保存到数据库的方法:public void imgToDB(string sql){ //参数sql中要求保存的imge变量名称为@images//调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");FileStream fs = File.OpenRead(t_photo.Text);byte[] imageb = new byte[fs.Length];fs.Read(imageb, 0, imageb.Length);fs.Close();SqlCommand com3 = new SqlCommand (sql,con);com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;if (com3.Connection.State == ConnectionState.Closed)com3.Connection.Open();try{com3.ExecuteNonQuery();}catch{ }finally{ com3.Connection.Close(); }}数据库中读出图片并显示在picturebox中:方法一:private void ShowImage(string sql){//调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");SqlCommand cmd = new SqlCommand(sql, conn);conn.Open();byte[] b= (byte[])cmd.ExecuteScalar();if (b.Length 〉0){MemoryStream stream = new MemoryStream(b, true);stream.Write(b, 0, b.Length);pictureBox1.Image = new Bitmap(stream);stream.Close();}conn.Close();}方法二:当在dg中选中某行时:private void dg_MouseUp(object sender, MouseEventArgs e){//整行选择if (e.Button == System.Windows.Forms.MouseButtons.Left){//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片//显示相片object imgobj=dg[10, dg.CurrentRow.Index].Value;if (imgobj != null && !Convert.IsDBNull(imgobj)){byte[] imgb = (byte[])imgobj;MemoryStream memStream = new MemoryStream(imgb);try{Bitmap myimge = new Bitmap(memStream);this.pictureBox1.Image = myimge;}catch{DB.msgbox("从数据库读取相片失败!");}}elsepictureBox1.Image = null;}}。
C#保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox。。。
C#保存PictureBox中的图⽚到数据库,并从数据库读取图⽚显⽰到PictrueBox。
下⾯是两段关键代码:/// <summary>///将⼀张图⽚转换为字节///</summary>///<param name="img">图⽚</param>///<param name="imgFormat">保存图⽚的类型</param>///<returns>byte[]</returns>public byte[] ImgToByte(Image img,System.Drawing.Imaging.ImageFormat imgFormat){Bitmap bmp = new Bitmap(img);MemoryStream memStream = new MemoryStream();bmp.Save(memStream, imgFormat);memStream.Seek(0, SeekOrigin.Begin); //及时定位流的开始位置byte[] btImage = new byte[memStream.Length];memStream.Read(btImage, 0, btImage.Length);memStream.Close();return btImage;}将PictureBox中的图⽚以参数形式传进,另⼀个参数是要转换成的图⽚类型。
这个函数返回⼀个byte[]数组,调⽤这个函数,将返回的数组保存到数据库中就可以了。
数据库的相应字段类型是 image 类型。
需要特别注意的是这句 memStream.Seek(0, SeekOrigin.Begin); //及时定位流的开始位置 如果没有这句话,在后边读取数据库显⽰图⽚的时候就会报错,“⽆效参数”。
C# MySQL 图片的存储与读取
C# MySQL 图片的存储与读取一、存储图片private void button3_Click(object sender, EventArgs e){if (pictureBox2.Image != null){//将图片对象image转换成缓冲流imageStreamMemoryStream imageStream = new MemoryStream();pictureBox2.Image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);//获得图片的字节数组imageBytebyte[] imageByte = imageStream.GetBuffer();//建立数据库连接MySqlConnection conn = new MySqlConnection("Server=localhost;Uid=root;Password=123;Database=test"); conn.Open();//设置命令参数string insertStr="insert into img(image) values(?imageByte)";MySqlCommand comm = new MySqlCommand();comm.Connection = conn;mandText = insertStr;mandType = CommandType.Text;//设置数据库字段类型MediumBlob的值为图片字节数组imageBytecomm.Parameters.Add(new MySqlParameter("?imageByte", MySqlDbType.MediumBlob)).Value = imageByte;//执行命令try{comm.ExecuteNonQuery();}catch (Exception ex){MessageBox.Show(ex.ToString());}comm.Dispose();conn.Close();conn.Dispose();}}二、读取图片private void button4_Click(object sender, EventArgs e){//建立数据库连接MySqlConnection conn = new MySqlConnection("Server=localhost;Uid=root;Password=123;Database=test"); conn.Open();//设置命令参数MySqlCommand comm = new MySqlCommand("select image from img order by id desc", conn);//执行命令并获得数据读取器MySqlDataReader dr = comm.ExecuteReader();if (dr.Read()){//读出图片字节数组至byte[]byte[] imageByte = new byte[dr.GetBytes(0, 0, null, 0, int.MaxValue)];dr.GetBytes(0, 0, imageByte, 0, imageByte.Length);//将图片字节数组加载入缓冲流MemoryStream imageStream = new MemoryStream(imageByte);//从缓冲流生成图片Image image = Image.FromStream(imageStream, true);pictureBox2.Image = image;}dr.Dispose();comm.Dispose();conn.Close();conn.Dispose();}。
C#从数据库读取图片并保存的两种方法
C#从数据库读取图⽚并保存的两种⽅法⽅式⼀:数据库⽤的是SQL 2008,数据表中存放的是图⽚的⼆进制数据,现在把图⽚以⼀种图⽚格式(如.jpg)导出,然后存放于指定的⽂件夹中,实现⽅式如下:byte[] bytImg = (byte[])myDAL.DbHelperSQL.Query("SELECT F_Photo FROM myTable WHERE ID=1").Tables[0].Rows[0][0];if (bytImg != null){MemoryStream ms = new MemoryStream(bytImg);Image img = Image.FromStream(ms);img.Save("D:\\me.jpg");}⽅式⼆:是windowform程序,数据库已经建好,图像以⼆进制形式存放在数据库的image表中,我想把符合查询条件的图像(⼤量)从数据库中读出,显⽰在form窗体上的⼀个控件(listview或imagelist还是picturebox?这个不知道那个合适),并保存到选择(或新建)的⼀个⽂件夹中SqlDataAdapter da = new SqlDataAdapter("select * from newpicture", conn);//数据库连接,修改⼀下数据库的操作。
DataSet ds = new DataSet();da.Fill(ds, "pic");//将符合条件的选项保存在数据集的pic表⾥string picdotname;string picfilename;int piclength;int i;//添加新列DataColumn newcolumn = ds.Tables["pic"].Columns.Add("pic_url", typeof(string));//给pic表添加新的⼀列pic_url,保存你的新写出的图⽚路径for (i = 0; i < Convert.ToInt16(ds.Tables["pic"].Rows.Count); i++){picdotname = ds.Tables["pic"].Rows[i]["pic_dot"].ToString();//图⽚的拓展名,你数据库要有这⼀列,如jpgpiclength = Convert.ToInt32(ds.Tables["pic"].Rows[i]["pic_length"]);//数据流的长度picfilename = Server.MapPath("新建的⽂件夹名/") + "添加图⽚名"+ "." + picdotname;FileStream fs = new FileStream(picfilename, FileMode.Create, FileAccess.Write);byte[] piccontent = new byte[piclength];piccontent = (byte[])ds.Tables["pic"].Rows[i]["pic_content"];fs.Write(piccontent, 0, piclength);fs.Close();//读出数据流写成图⽚//最后把表绑定到控件上。
C#Form+MySql储存读取图片
C#Form+Mysql数据库实现图片二进制流存储和读取1.MySql数据库创建表格tableSql语句:create table 表名(Number int(5),imagemediumblob);表格中储存二进制图片的属性设为blob(一般mediumblob够用了)2.在C#Form窗体中添加个pictureBox控件,用来传递图片3.窗体连接数据库(怎么连接这里不做过多详解),在pictureBox控件中添加一张要储存的图片4.图片转入数据库代码:if (pictureBox1.Image != null){//实列化数据流imageStream//注:在空间引用中添加using System.I0;MemoryStream imageStream = new MemoryStream();//把pictureBox控件中的图片转化成二进制流,储存到实列化的byte[] imageBytepictureBox1.Image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] imageByte = imageStream.ToArray();//连接数据库并打开MySqlConnection conn =new MySqlConnection("server=localhost;database=test2;uid=root;pwd=123456;charset=gb2312");conn.Open();//在C#Form中写Sql语句,注:?imageByte前的?不能少,在MySql中用的是?,不能用@,@会导致存入的数据为null,连接数据库的时候charset=gb2312不能少,少了可能会导致用?出现乱码的提示错误MySqlCommand comm = new MySqlCommand("insert into 表名 values(1,?imageByte)",conn);//把imageByte转成mediumblob类型储存comm.Parameters.Add(new MySqlParameter("?imageByte", MySqlDbType.MediumBlob, imageByte.Length)).Value = imageByte;comm.ExecuteNonQuery();comm.Dispose();conn.Close();conn.Dispose();}5.图片以二进制流存入数据库后,调用读取图片//连接数据库MySqlConnection conn = new MySqlConnection("server=localhost;database=test2;uid=root;pwd=123456");conn.Open();//Sql语句: Number是在创建table时候的字段MySqlCommand comm = new MySqlCommand("select image from t3 where Number=1", conn);MySqlDataReader dr = comm.ExecuteReader();if (dr.Read()){//把从数据库读取的数据重新转成byte[]byte[] imageByte = (byte[])dr[0];//强制转换,如出现不能强制转换的错误,很有可能是读取的数据为null,即没有存图片数据到数据库中//请仔细查找前面代码是否有细节出错的地方//实列化数据流imageStreamMemoryStream imageStream = new MemoryStream(imageByte); //二进制流数据重新转成图片Image image = Image.FromStream(imageStream);赋值给picturebox1pictureBox1.Image = image;}dr.Dispose();comm.Dispose();conn.Close();conn.Dispose();注:存储和读取在不同的窗体。
C#保存图片到数据库,读取图片显示
this.sqlConnection1.Close();
}
catch(System.Exception ee)
{
MessageBox.Show(ee.Message );
}
buffByte = null;
this.FillListBox();
}
读取:
从数据库读图片到picturebox
System.IO.FileStream fs = new System.IO.FileStream(pathName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte[] buffByte = new byte[fs.Length];
fs.Read(buffByte,0,(int)fs.Length);
பைடு நூலகம்
fs.Close();
fs = null;
//建树Command号令
string comm = @"Insert into table1(img,name) values(@img,@name)";
this.sqlCommand1 = new System.Data.SqlClient.SqlCommand ();
将图像保存到SQL server2000的Image字段中
private void button2_Click_1(object sender, System.EventArgs e)
{
string pathName;
if (this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
java从数据库中读取图片文件
附属程序:package com.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Connec {Connection con=null;public Connec(){try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库驱动(此驱动为jdbc:odbc驱动)} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=star","sa ","sa");//连接数据库,star数据库名,sa分别为账户名和密码if(!con.isClosed()){System.out.println("ok");}else{System.out.println("error");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public Connection getCon(){return con;}}主程序:package com.db.main;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.sql.Blob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.db.Connec;public class Win {public static void main(String[] args) {// TODO Auto-generated method stub// @SuppressWarnings("unused")// Add add=new Add();@SuppressWarnings("unused")Connection con=(new Connec()).getCon();if(con!=null){System.out.println("连接成功");}try {FileOutputStream ous=new FileOutputStream(newFile("C:\\zz.jpg"));PreparedStatement ps=con.prepareStatement("select Image from Image where name=\'D:\\My Documents\\见证.jpg\'");//从数据库中读取的图片是事先已经存入的二进制数据ResultSet rs=ps.executeQuery();rs.next();Blob ob=null;ob=rs.getBlob(1);long size=ob.length();byte bs[]=ob.getBytes(1, (int)size);ous.write(bs);ous.flush();ous.close();rs.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}。
最新C从SQL数据库中读取和存入图片汇总
C从S Q L数据库中读取和存入图片C#从SQL 数据库中读取和存入图片本实例主要介绍如何将图片存入数据库。
将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。
主要代码如下:private void button1_Click(object sender, EventArgs e){openFileDialog1.Filter ="*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";if(openFileDialog1.ShowDialog()==DialogResult. OK){string fullpath=openFileDialog1.FileName;//文件路径FileStream fs = new FileStream(fullpath, FileMode.Open);byte[] imagebytes =new byte[fs.Length];BinaryReader br = new BinaryReader(fs);imagebytes =br.ReadBytes(Convert.ToInt32(fs.Length));//打开数据库SqlConnection con = newSqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = newSqlCommand("insert into tb_08 values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图片读出来。
数据库中存取图像
万方数据DATABASEANDINFORMATIONMANAGEMENT数据库和信息管理!EjE!!!!!!!==!=.表1Pictures表的结构字段名称数据类型备注ld自动编号设为主键Pic0LE对象建立相应的界面如图1。
图1(1)加载图片选择图片,将图片加载到PictureBoxl中:privatevoidbt_SelectPicture_Click(objectsender,Even-tArgse){OpenFileDialogopenFileDialogl=newOpenFileDi—alog();openFileDial091.Filter=”图片文件I*.Jpeg;*.Jpg”;,,只对JpegJpg图像openFileDial091.ShowDialog0;if(openFileDial091.FileName.Trim01=””){this.pictureBoxl.ImageLocation=openFileDial091.FileName;l}(2)存图片到数据库中privatevoidbUpicToDambase_Click(objectsender,EventArgse)胛亏到Access数据库{,,根据路径读取图片System.Drawing.Imageimg2System.Drawing.Image.FromFile(this.pictureBoxl.ImageLocation);System.IO.MemoryStreamms=newSystem.IO.MemoryStream();Lmg.Save(ms,System.Drawing.Imaging.ImageFonnat.Jpeg)://以Jpeg格式存到内存中Byte【】PictIlreData=newByte【ms.Length】;Ills.Position=0:ms.Read(PictureData,0,Convert.ToInt32(ms.Length))://'4辱数据存入字节数组中stringConnStr=”Provider=Microsoft.Jet.OLEDB.4.0‘9DataSource=”+Application.StartupPath+”\XSample.mdb;”;OleDbConnectionConn=newOleDbConnection(CormStr);OleDbCommandCmd=newOleDbCommandfIIINSERT唧Picmms(Pic)Values(@Pic)”,Conn);OleDbParameterprml=newOleDbParameter(”@Pic“,OleDbType.VarBinary,PicmwData.Length,ParameterDirection.Input,false,0,0,null,DataRowVersion.Current,PictureData);Cmd.Parameters.Add(prml);Conn.Open();try{Cmd.ExecuteNonQuery();MessageBox.ShowC数据保存成功”);)catch(Exceptionex)tMessageBox.Show(”发生异常错误:”+ex.Message.ToString());lfinally{Conn.Close0;ll(3)从数据库中读出并显示在PietureBoxI中privatevoidbt_DatabaseToPic_Click(objectsender,Even—tArgse){stringConnStr=”Provider=Microsoft.Jet.OLEDB.4.0:DataSource=’’+Application.StartupPath+”\、Sample.mdb;”;OleDbConnectionConn--newOleDbConnection(ConnStr);OleDbCommandCmd=newOleDbCommand(””,Corm):Corm.Open0;OieDbDataAdapterm_Adapter=uewOleDbDataAdapter(”Select+fromPictures“,Conn);DataSetm—DataSet=newDataSet0;m_Adapter.Fill(m_DataSet,”Pictures”);Corm.Close0:m_Adapter.Dispose();Byte【】PictureData=(Byte【】)(m_DataSet.Tables【”Pictures”】.Rows【0】【¨Pic”】);,,取二进制数据存人字节数组中if(pictureData.Length—o),,如果所存的图象为空{this.pictureBoxl.Image=null;}elsefSystem.IO.MemoryStreamms=newSystem.IO.Memo-ryStream(pictureDam);//字节数组转为内存流(下转到99页)一53— 万方数据 万方数据数据库中存取图像作者:魏再超, 张晓睿, WEI Zaichao, ZHANG Xiaorui作者单位:魏再超,WEI Zaichao(云南师范大学计信学院,昆明,650092;保山师范高等专科学校,保山,678000), 张晓睿,ZHANG Xiaorui(保山师范高等专科学校,保山,678000)刊名:电脑编程技巧与维护英文刊名:COMPUTER PROGRAMMING SKILLS & MAINTENANCE年,卷(期):2009(6)1.马歇尔;许华杰;刘光惠Visual C#2005技术内幕 20072.Anders Hejlsberg;Scott Wiltamuth;Peter Golde;张晓坤,谭立平.车树良C#编程语言详解 20043.内格尔;等;李敏波C#高级编程 20064.Karli Watson;Christian Nagel C#入门经典 2006本文链接:/Periodical_dnbcjqywh200906019.aspx。
从数据库中读取Blob对象图片并显示
从数据库中读取Blob对象图片并显示第一种方法:大致方法就是,从数据库中读出Blob的流来,写到页面中去:Connection conn = DBManager.getConnection();String sql = "SELECT picture FROM teacher WHERE id=1"; PreparedStatement ps = null;ResultSet rs = null;InputStream is = null;OutputStream os = null;try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();if(rs.next()){is = rs.getBinaryStream(1);}response.setContentType("text/html");os = response.getOutputStream();int num;byte buf[] = new byte[1024];while( (num=is.read(buf))!=-1 ){os.write(buf, 0, num);}} catch (SQLException e) {e.printStackTrace();}try {is.close();os.close();rs.close();ps.close();} catch (SQLException e) {e.printStackTrace();}在页面中:<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><img name="pic" src="<%=basePath+"servlet/DownloadAsStream"%>"/>搞定。
java+mysql实现保存图片到数据库,以及读取数据库存储的图片
java+mysql实现保存图⽚到数据库,以及读取数据库存储的图⽚⼀:建表⼆:获取数据库连接1:导⼊mysql的驱动jar包,mysql-connector-java-5.1.8-bin.jar2:写代码连接数据库,如下:1/**2 *3*/4 package com.hlcui.file;56 import java.sql.Connection;7 import java.sql.DriverManager;8 import java.sql.SQLException;910/**11 * @author Administrator12 *13*/14public class DBUtil {15// 定义数据库连接参数16public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";17public static final String URL = "jdbc:mysql://localhost:3306/test";18public static final String USERNAME = "root";19public static final String PASSWORD = "root";2021// 注册数据库驱动22static {23try {24 Class.forName(DRIVER_CLASS_NAME);25 } catch (ClassNotFoundException e) {26 System.out.println("注册失败!");27 e.printStackTrace();28 }29 }3031// 获取连接32public static Connection getConn() throws SQLException {33return DriverManager.getConnection(URL, USERNAME, PASSWORD);34 }3536// 关闭连接37public static void closeConn(Connection conn) {38if (null != conn) {39try {40 conn.close();41 } catch (SQLException e) {42 System.out.println("关闭连接失败!");43 e.printStackTrace();44 }45 }46 }47//测试48public static void main(String[] args) throws SQLException {49 System.out.println(DBUtil.getConn());50 }5152 }三:封装读取图⽚的流1/**2 *3*/4package com.hlcui.file;56import java.io.File;7import java.io.FileInputStream;8import java.io.FileOutputStream;9import java.io.IOException;10import java.io.InputStream;1112/**13 * @author Administrator14 *15*/16public class ImageUtil {1718// 读取本地图⽚获取输⼊流19public static FileInputStream readImage(String path) throws IOException { 20return new FileInputStream(new File(path));21 }2223// 读取表中图⽚获取输出流24public static void readBin2Image(InputStream in, String targetPath) {25 File file = new File(targetPath);26 String path = targetPath.substring(0, stIndexOf("/"));27if (!file.exists()) {28new File(path).mkdir();29 }30 FileOutputStream fos = null;31try {32 fos = new FileOutputStream(file);33int len = 0;34byte[] buf = new byte[1024];35while ((len = in.read(buf)) != -1) {36 fos.write(buf, 0, len);37 }38 fos.flush();39 } catch (Exception e) {40 e.printStackTrace();41 } finally {42if (null != fos) {43try {44 fos.close();45 } catch (IOException e) {46 e.printStackTrace();47 }48 }49 }50 }51 }四:实现图⽚(本地、数据库互相传输)1/**2 *3*/4package com.hlcui.file;56import java.io.FileInputStream;7import java.io.InputStream;8import java.sql.Connection;9import java.sql.PreparedStatement;10import java.sql.ResultSet;11import java.sql.SQLException;1213/**14 * @author Administrator 测试写⼊数据库以及从数据库中读取15*/16public class ImageDemo {1718// 将图⽚插⼊数据库19public static void readImage2DB() {20 String path = "D:/1.png";21 Connection conn = null;22 PreparedStatement ps = null;23 FileInputStream in = null;24try {25 in = ImageUtil.readImage(path);26 conn = DBUtil.getConn();27 String sql = "insert into photo (id,name,photo)values(?,?,?)";28 ps = conn.prepareStatement(sql);29 ps.setInt(1, 1);30 ps.setString(2, "Tom");31 ps.setBinaryStream(3, in, in.available());32int count = ps.executeUpdate();33if (count > 0) {34 System.out.println("插⼊成功!");35 } else {36 System.out.println("插⼊失败!");37 }38 } catch (Exception e) {39 e.printStackTrace();40 } finally {41 DBUtil.closeConn(conn);42if (null != ps) {43try {44 ps.close();45 } catch (SQLException e) {46 e.printStackTrace();47 }48 }49 }5051 }5253// 读取数据库中图⽚54public static void readDB2Image() {55 String targetPath = "D:/image/1.png";56 Connection conn = null;57 PreparedStatement ps = null;58 ResultSet rs = null;59try {60 conn = DBUtil.getConn();61 String sql = "select * from photo where id =?";62 ps = conn.prepareStatement(sql);63 ps.setInt(1, 1);64 rs = ps.executeQuery();65while (rs.next()) {66 InputStream in = rs.getBinaryStream("photo");67 ImageUtil.readBin2Image(in, targetPath);68 }69 } catch (Exception e) {70 e.printStackTrace();71 } finally {72 DBUtil.closeConn(conn);73if (rs != null) {74try {75 rs.close();76 } catch (SQLException e) {77 e.printStackTrace();78 }79 }80if (ps != null) {81try {82 ps.close();83 } catch (SQLException e) {84 e.printStackTrace();85 }86 }8788 }89 }90//测试91public static void main(String[] args) {92//readImage2DB();93 readDB2Image();94 }95 }以上代码均已经验证!。
用JSP从数据库中读取图片并显示在网页上
用JSP从数据库中读取图片并显示在网页上环境mysql+tomcat:<1>先在mysql下建立如下的table. 并insert图像.mysql.sql文件如下:CREATE TABLE photo (photo_no int(6) unsigned NOT NULL auto_increment,image blob,PRIMARY KEY (`photo_no`))<2>把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg.show.jsp文件如下:<%@ page contentType="text/html; charset=gbk" %><%@ page import="java.io.*"%><%@ page import="java.sql.*, javax.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.math.*"%><%String photo_no = request.getParameter("photo_no");//mysql连接Class.forName("com.mysql.jdbc.Driver").newInstance();String URL="jdbc:mysql://localhost:3306/job?user=root&password=111111"; Connection con = DriverManager.getConnection(URL);//oracle连接//String URL="jdbc:oracle:thin@localhost:1521:orcl2";//user="system";//password="manager";//Connection con = DriverManager.getConnection(URL,user,password);try{// 准备语句执行对象Statement stmt = con.createStatement();String sql = " SELECT * FROM PHOTO WHERE photo_no = "+ photo_no; ResultSet rs = stmt.executeQuery(sql);if (rs.next()) {Blob b = rs.getBlob("photo_image");long size = b.length();//out.print(size);byte[] bs = b.getBytes(1, (int)size);response.setContentType("image/jpeg");OutputStream outs = response.getOutputStream();outs.write(bs);outs.flush();rs.close();}else {rs.close();response.sendRedirect("./images/error.gif");}}finally{ con.close(); } %><3>把如下文件放在show.jsp的同一目录下.index.html文件如下:<HTML><HEAD><TITLE> 图像测试</TITLE></HEAD><BODY><TABLE><TR><TD>图像测试</TD></TR><TR> <TD><img src="show.jsp?photo_no=2"></TD> </TR></TABLE></BODY></HTML><style type="text/css">#t { width: 615px; height:230px; overflow:hidden;}#t div{ width: 152px; text-align: center; height: 112px;}#t div img{width:146px;height:115px;border:0}</style><table width="100%" border="0" cellspacing="0" cellpadding="0"> <div id="t"><%for(WareDTO w:list1){ %><div> <a href="ShowProductListAction?id=<%=w.getId() %>"><img src="upload/<%=w.getPicture()%>"/></a></div><% } %></div></table>这样就竖着显示 2张旁边空白。
如何从SQL数据库中调用图片?
如何从SQL数据库中调用图片?<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" designer="lemon"> <title>test BLOB picture</title></head></html>test.asp<% @ LANGUAGE=VBScript %><% Option Explicit %><!--#include file="adovbs.inc"--><%Dim oConnDim oRsDim PicDim PicSize' 利用安装在Microsoft SQL Server PUBS 数据库中PUB_INFO表格里的Image域Response.Buffer = TRUEResponse.ContentType = "image/gif"' 设置HTTP表头信息,以便浏览器解释作为GIF图像返回的数据.注意:浏览器解释返回的信息使用的是MIME 表头,而非文件扩展Set oConn = Server.CreateObject("ADODB.Connection")oConn.Open "DSN=pubs;UID=sa;PWD=;DA TABASE=pubs"' 创建ADO连接对象.使用了缺省的sa帐号、没有密码的IISSDK OBDC Souce Set oRs = oConn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'") ' 查询SQL以获得连接gif BLOB的recordsetPicSize = oRs("logo").ActualSizePic = oRs("logo").GetChunk(PicSize)' 获得GIF局部变量Response.BinaryWrite Pic' 写数据到客户端, 因为MIME类型被设为image/gif, 浏览器将会自动认作图片Response.End%>。
从ministdatabase(t10k-images-idx3-ubyte)中读取图片
从ministdatabase(t10k-images-idx3-ubyte)中读取图⽚matlab代码(亲测,可运⾏出来):% Matlab_Read_t10k-images_idx3.m% ⽤于读取MNIST数据集中t10k-images.idx3-ubyte⽂件并将其转换成bmp格式图⽚输出。
% ⽤法:运⾏程序,会弹出选择测试图⽚数据⽂件t10k-labels.idx1-ubyte路径的对话框和% 选择保存测试图⽚路径的对话框,选择路径后程序⾃动运⾏完毕,期间进度条会显⽰处理进度。
% 图⽚以TestImage_00001.bmp~TestImage_10000.bmp的格式保存在指定路径,10000个⽂件占⽤空间39M。
% 整个程序运⾏过程需⼏分钟时间。
clear all;clc;%读取训练图⽚数据⽂件[FileName,PathName] = uigetfile('*.*','选择测试图⽚数据⽂件t10k-images.idx3-ubyte');TrainFile = fullfile(PathName,FileName);fid = fopen(TrainFile,'r'); %fopen()是最核⼼的函数,导⼊⽂件,‘r’代表读⼊a = fread(fid,16,'uint8'); %这⾥需要说明的是,包的前⼗六位是说明信息,从上⾯提到的那个⽹页可以看到具体那⼀位代表什么意义。
所以a变量提取出这些信息,并记录下来,⽅便后⾯的建⽴矩阵等动作。
MagicNum = ((a(1)*256+a(2))*256+a(3))*256+a(4);ImageNum = ((a(5)*256+a(6))*256+a(7))*256+a(8);ImageRow = ((a(9)*256+a(10))*256+a(11))*256+a(12);ImageCol = ((a(13)*256+a(14))*256+a(15))*256+a(16);%从上⾯提到的⽹页可以理解这四句if ((MagicNum~=2051)||(ImageNum~=10000))error('不是 MNIST t10k-images.idx3-ubyte ⽂件!');fclose(fid);return;end %排除选择错误的⽂件。
C#从SQL数据库中读取和存入图片
C#从SQL数据库中读取和存⼊图⽚本实例主要介绍如何将图⽚存⼊数据库。
将图⽚存⼊数据库,⾸先要在数据库中建⽴⼀张表,将存储图⽚的字段类型设为Image类型,⽤FileStream类、BinaryReader把图⽚读成字节的形式,赋给⼀个字节数组,然后⽤ADO.SqlCommand对象的ExecuteNonQuery()⽅法来把数据保存到数据库中。
主要代码如下:private void button1_Click(object sender, EventArgs e){openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";if(openFileDialog1.ShowDialog()==DialogResult.OK){string fullpath =openFileDialog1.FileName;//⽂件路径FileStream fs = new FileStream(fullpath, FileMode.Open);byte[] imagebytes =new byte[fs.Length];BinaryReader br = new BinaryReader(fs);imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//打开数据库SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图⽚读出来。
用C#编程从数据库中读取图片数据导进Excel文件的方法
用C#编程从数据库中读取图片数据导进Excel文件的方法近日在毕业设计中遇到要解决用C#编程从数据库中读取图片数据导进Excel文件的问题,经过两三天的苦苦搜索资料想方设法解决问题,终于获得解决方法,代码如下(程序要另外引用Excel.dll,需要获取文件请访问:/Lvyou/Forum/ForumContent.asp?ID=182):using System;using System.IO;using System.Data;using System.Drawing;using System.Drawing.Imaging;using System.Windows.Forms;using Excel;private void EduceExcel(){string picPath=Directory.GetCurrentDirectory()+ '\\Excelpic.jpg ';string ExcelName=Directory.GetCurrentDirectory()+ '\\ExcelModul.xls ';string fileName = 'Excel '+DateTime.Now.T oString().Replace( ': ', ' ') + '.xls ';Excel.Application app =new Excel.Application();//建立Excel对象app.Visible=true;//让Excel文件可见Workbook objbook;objbook = app.Workbooks.Add(ExcelName);Worksheet worksheet;worksheet =(Worksheet)objbook.Worksheets[1];Excel.Pictures pics=(Excel.Pictures)worksheet.Pictures(Type. Missing);//建立图片集合对象int TD=1;int p=1;PicItemColletion picItems= PicItem.Getpictems();//读取数据库图片数据集合foreach(PicItem PI in picItems){if(PI.ImageData != null){MemoryStream stream = new MemoryStream(PI.Imag eData, 0, PI.ImageData.Length);Bitmap bitmap = new Bitmap(stream);bitmap.Save(picPath,System.Drawing.Imaging.ImageFormat. Jpeg);//保存临时图片文件到硬盘里if(File.Exists(picPath)){stream.Close();//关闭图像文件流Range range_1 =range=worksheet.get_Range( 'A '+TD.T oString(), 'A '+TD.T oString());//获取填充单元格范围pics.Insert(picPath,Type.Missing);//获取图片Excel.Picture pic = (Excel.Picture )pics.Item(p);//建立图片集合某一图片对象pic.Left = (double)range_1.Left;pic.Top = (double)range_1.Top;pic.Height =(double)range_1.Height;pic.Width =(double)range_1.Width;TD=TD+1;p=p+1;}}if(File.Exists(picPath)){File.Delete(picPath);//删除图片}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用数据控件和数据绑定控件
利用这种方法,不写或写少量代码就可以构造简单的数据库应用程序,这种方法易于被初学者接受。在举例之前,先把数据绑定功能简要的说明一下,凡是具有DataSource属性的控件都是对数据敏感的,它们都能通过数据控件直接使用数据库里的数据。比如CheckBox Control , ComboBox Comtrol , TextBox Comtrol , PictureBox Control ,Image Comtrol … 因为这种方式涉及到的知识点比较少,也比较容易理解,不多作说明,现直接介绍编程步骤。
DataFile = 1
Open MediaTemp For Binary Access Write As DataFile
lngTotalSize = RS!MyPhoto.ActualSize
Chunks = lngTotalSize \ ChunkSize
Fragment = lngTotalSize Mod ChunkSize
Chunks = FileLen \ ChunkSize
Fragment = FileLen Mod ChunkSize
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
RS!MyPhoto.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
Set RS = Nothing
两种方法在使用方面各有所长,读者可以针对自己的情况做出合理的选择。
ReDim Chunk(Fragment)
Chunk() = RS!MyPhoto.GetChunk(Fragment)
Put DataFile, , Chunk()
For i = 1 To Chunks
ReDim Chunk(ChunkSize)
Chunk() = RS!MyPhoto.GetChunk(ChunkSize)
If Picture1.Picture = 0 Then Exit Subj
2、向数据库中添加需要存储的图片
向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的操作,存储图片的操作也就迎刃而解了,下面将操作步骤介绍如下
第一步首先打开数据库,过程如下:
RS.Source = "select * from Info ;"
Dim RS As New ADODB.Recordset
Dim Chunk() As Byte
Const ChunkSize As Integer = 2384
Dim DataFile As Integer, Chunks, Fragment As Integer
Dim MediaTemp As String
For i = 1 To Chunks
Get DataFile, , Chunk()
RS!MyPhoto.AppendChunk Chunk()
Next i
Close DataFile
第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。
RS.Update
RS.Close
Dim lngOffset, lngTotalSize As Long
Dim i As Integer
1、从数据库中显示所需要的图片
第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出
RS.Source = "select * from Info Where Name='" & sparaName &"';"
2、向数据库中添加需要存储的图片
首先,利用数据控件所具有的AddNew属性,添加一个按钮,双击后添加如下代码MyData.Recordset.AddNew
第二步,为Image控件图片指定图片路径Image1.Picture = LoadPicture("图片路径"),经过这两步的操作,就可以向数据库中添加图片了。
数据库是数据管理的最新技术,是计算机科学的重要分支,是现代计算机信息系统和计算机应用的基础和核心。在科学技术高速发展的今天,在信息资源无处不在、无处不用,已成为各部门的重要财富的时候,对于从事程序开发的人员来说显得尤为重要。
如今,对数据库的操作不仅仅满足于对字符和数字的单一操作,图像的存储与显示已显得尤为重要。下面作者将以VB6.0与Access97作为开发工具,分别介绍两种图像显示与存储的方法。
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;"
RS.Open
第二步,把要存储的图片转换成二进制长文件存入数据库中,操作过程如下
1、从数据库中显示所需要的图片
首先,添加一个Data数据控件,设置它的DatabaseName和RecordSource属性,
strPah, 1) <> "\" Then
strPath = strPath & "\"
MyData.DatabaseName = strPath & "ExampleDB.mdb" '数据库存地址
MyData.RecordSource = "Info" '表名
第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。例如本例中: Image1.DataSource="MyData"和Image1.DataField=" MyPhoto" 。然后设置其它具有数据绑定功能的控件用来显示所要的其它内容,经过这两步的操作,运行程序就可以显示你要的数据了。
这种方法最简单快捷,要写的代码量很少。但是这种方法在运行速度和灵活性方面有一定的限制,适合于初学者和一些简单的应用,要想灵活多变的显示图像,下面介绍的方法或许更适应您的要求。
利用编写代码实现图片的存储与显示
这种方法相对于方法一来说,代码量大,但是它操作灵活,能够满足多样形式下的操作,受到更多编程者的青睐。但是涉及到的知识面相对要多一些,不仅要掌握数据库的操作方法,还要二进制文件的读写作进一步的了解。关于数据库及二进制文件的基本操作很多参考书上都介绍的比较详细,需要时请查阅即可。在编程之前把本部分用到的变量说明如下:
RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;"
RS.Open
If RS.EOF Then ose : Exit Sub
第二步,读出长二进制数据即图片数据,把它转换成图片文件,操作过程如下
MediaTemp = strPath & "picturetemp.tmp"
Put DataFile, , Chunk()
Next i
Close DataFile
第三步,关闭数据库,这样就可以显示所要的图片了。
RS.Close
If MediaTemp = "" Then Exit Sub
Picture1.Picture = LoadPicture(MediaTemp)
RS.AddNew
DataFile = 1
Open strPathPicture For Binary Access Read As DataFile
FileLen = LOF(DataFile) ' 文件中数据长度
If FileLen = 0 Then : Close DataFile : RS.Close : Exit Sub