java向数据库存取图片

合集下载

java根据图片路径下载图片并保存到本地目录

java根据图片路径下载图片并保存到本地目录

java根据图⽚路径下载图⽚并保存到本地⽬录内容import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import .URL;import .URLConnection;public class DownloadImage {/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception {// TODO Auto-generated method stubdownload("/1/3/B/1_li1325169021.jpg", "1_li1325169021.jpg","d:\\image\\");}public static void download(String urlString, String filename,String savePath) throws Exception {// 构造URLURL url = new URL(urlString);// 打开连接URLConnection con = url.openConnection();//设置请求超时为5scon.setConnectTimeout(5*1000);// 输⼊流InputStream is = con.getInputStream();// 1K的数据缓冲byte[] bs = new byte[1024];// 读取到的数据长度int len;// 输出的⽂件流File sf=new File(savePath);if(!sf.exists()){sf.mkdirs();} // 获取图⽚的扩展名String extensionName = filename.substring(stIndexOf(".") + 1);// 新的图⽚⽂件名 = 编号 +"."图⽚扩展名String newFileName = goods.getProductId()+ "." + extensionName;OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);// 开始读取while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完毕,关闭所有链接os.close();is.close();}}。

C#保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox。。。

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); //及时定位流的开始位置 如果没有这句话,在后边读取数据库显⽰图⽚的时候就会报错,“⽆效参数”。

用JAVA实现Web图片批量下载

用JAVA实现Web图片批量下载
H ML解 析 器 实现 基 于 We T b的 图 片批 量 下载 。 We 对 b上 一 些 其 它 资 源的 批 量 下 栽 。 可 采 用 想 类 似 的 方 法 实现 。 面 向 网络 也 在 信 息搜 集 方 面应 该 有 一 定 的借 鉴 作 用 。
【 关键词 】 aa H ML解析 ; :Jv ; T 图片; 批量 下栽
4 .设计
rtm ue. tasr; eu spr e r 0 gP e }
】 现 在 可 以使 用 如 下 代 码对 页面 内容 的读 取 和 解 析o 类
本 程 序包 装 成 一 个 R bt .使 用 时需 要 传 递 两 个 参 数 给 oo 类 Rbt o o 对象 的构 造 函数 . 个 是 网 站 开 始 搜 索 页 面 的 U L. 一 一 R 另 个 是 图片 在 本 地保 存 的 路 径 oo 类 只会 分 析 同一 服 务器 上 的 R bt 页 面 , 且 只 分析 开 始 页面 所 在 的层 次 及 其 子层 的页 面 。 有 被 并 所
14 8




21 0 0年第 2期
用 JV A A实现 We b图片批量下载
李家声
(汕 头职 业 技 术 学院 广 东 汕 头 55 0 ) 100
【 摘 要】 阐述 了如 何在 Jv : aa中, 利用 H ML文档之 间的链接 关 系, T 使用 Jv aa内置的线程机制 、 网络 通讯库和 S ig wn
H ML r iPre p r T E : Kl a r as 0 _ s e=nwH ML m e . tasr; e T P s 0g P r 0 e e pr . r ( nwP r r r, m ) a ep s r e as ( 1 l e s ae, e u )a ;

spring+mybatis下oracle图片存储读取

spring+mybatis下oracle图片存储读取

spring+mybatis下oracle图片存储读取图片存储:java类中public int emergencytest(HttpServletRequest request){String u=this.getClass().getResource("/").getPath();u=u.substring(1, u.indexOf("/WEB-INF"));u=u+"/upload/";//将图片存在webcontent目录下的upload文件夹下,首先要创建upload文件夹File file=new File(u+"1.png");if(file.exists()){InputStream in=null;try {in = new FileInputStream(file);byte[] b=null;try {b = FileCopyUtils.copyT oByteArray(in);} catch (IOException e) {e.printStackTrace();}Map parametermap=new HashMap();if (b == null || b.length == 0) { return 0; }parametermap.put("file",b);Service.insert_test(parametermap);//该函数调用Dao中的insert_test函数,该函数对应mapper中insert_test语句} catch (FileNotFoundException e) {e.printStackTrace();}}return 0;}mapper文件中//pic字段是BLOB类型insert into t_emergency(id,thm_ttle,lay_ttle,createdate,attachment,pic) values('x','x','x',sysdate,'zxx.jpg',#{file,jdbcType=BLOB})图片读取:java类中public int emergency_get_test(HttpServletRequest request,HttpServletResponse response){String id="x";Map resultmap=new HashMap();resultmap=emergencyService.query_test(id);//数据库查询oracle.sql.BLOB blob=(oracle.sql.BLOB)resultmap.get("PIC");response.setContentType("image/png;charset=UTF-8");response.setCharacterEncoding("UTF-8");InputStream inStream=null;OutputStream op = null;byte[] data;long nLen=0;try {try {inStream = blob.getBinaryStream();nLen = blob.length();int nSize = (int) nLen;data = new byte[nSize];inStream.read(data);//将输入流中的数据读到数组中op = response.getOutputStream();op.write(data);//直接显示到网页上op.flush();op.close();inStream.close();} catch (SQLException e) {e.printStackTrace();}} catch (IOException e1) {System.out.println("获取图片数据失败,原因:" + e1.getMessage());}return 0;}}mapper中:。

将图片储存在MySQL数据库中的几种方法

将图片储存在MySQL数据库中的几种方法

将图⽚储存在MySQL数据库中的⼏种⽅法通常对⽤户上传的图⽚需要保存到数据库中。

解决⽅法⼀般有两种:1、将图⽚保存的路径存储到数据库;2、将图⽚以⼆进制数据流的形式直接写⼊数据库字段中。

以下为具体⽅法:⼀、保存图⽚的上传路径到数据库: string uppath="";//⽤于保存图⽚上传路径 //获取上传图⽚的⽂件名 string fileFullname = this.FileUpload1.FileName; //获取图⽚上传的时间,以时间作为图⽚的名字可以防⽌图⽚重名 string dataName = DateTime.Now.ToString("yyyyMMddhhmmss"); //获取图⽚的⽂件名(不含扩展名) string fileName = fileFullname.Substring(stIndexOf("\\") + 1); //获取图⽚扩展名 string type = fileFullname.Substring(stIndexOf(".") + 1); //判断是否为要求的格式 if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF") { //将图⽚上传到指定路径的⽂件夹 this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type); //将路径保存到变量,将该变量的值保存到数据库相应字段即可 uppath = "~/upload/" + dataName + "." + type; }⼆、将图⽚以⼆进制数据流直接保存到数据库:引⽤如下命名空间:using System.Drawing; using System.IO; using System.Data.SqlClient; 设计数据库时,表中相应的字段类型为iamge 保存: //图⽚路径 string strPath = this.FileUpload1.PostedFile.FileName.ToString (); //读取图⽚ FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] photo = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); //存⼊ SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123"); string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作数据库语句根据需要修改 SqlCommand myComm = new SqlCommand(strComm, myConn); myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length); myComm.Parameters["@photoBinary"].Value = photo; myConn.Open(); if (myComm.ExecuteNonQuery() > 0) { bel1.Text = "ok"; } myConn.Close(); 读取: ...连接数据库字符串省略 mycon.Open(); SqlCommand command = new SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改 byte[] image = (byte[])command.ExecuteScalar (); //指定从数据库读取出来的图⽚的保存路径及名字 string strPath = "~/Upload/zhangsan.JPG"; string strPhotoPath = Server.MapPath(strPath); //按上⾯的路径与名字保存图⽚⽂件 BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate)); bw.Write(image); bw.Close(); //显⽰图⽚ this.Image1.ImageUrl = strPath; //采⽤这两种⽅式可以根据实际需求灵活选择。

图片存入mySql数据库

图片存入mySql数据库

我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。

大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的只要大家将连接数据库的参数改一下就可以了。

SQL>create table image(id int,content varchar(200),image blob);如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。

testimage.html文件内容如下:<HTML><HEAD><TITLE>Image File </TITLE><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD><FORM METHOD=POST ACTION="testimage.jsp"><INPUT TYPE="text" NAME="content"><BR><INPUT TYPE="file" NAME="image"><BR><INPUT TYPE="submit"></FORM><BODY></BODY></HTML>我们在Form的action里定义了一个动作testimage.jsp,它的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String content=request.getParameter("content");String filename=request.getParameter("image");FileInputStream str=new FileInputStream(filename);String sql="insert into test(id,content,image) values(1,?,?)"; PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);pstmt.setString(1,content);pstmt.setBinaryStream(2,str,str.available());pstmt.execute();out.println("Success,You Have Insert an Image Successfully");%>下面我写一个测试image输出的例子看我们上面程序写的对不对,testimageout.jsp的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String sql = "select image from test where id=1";Statement stmt=null;ResultSet rs=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLException e){}try {while(rs.next()) {res.setContentType("image/jpeg");ServletOutputStream sout = response.getOutputStream();InputStream in = rs.getBinaryStream(1);byte b[] = new byte[0x7a120];for(int i = in.read(b); i != -1;){sout.write(b);in.read(b);}sout.flush();sout.close();}}catch(Exception e){System.out.println(e);}%></body></html>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。

Java实现读取excel中的数据及图片

Java实现读取excel中的数据及图片

Java实现读取excel中的数据及图⽚⼀、背景需要完成excel数据的读取与落库⼆、实现Java读取excel数据:指定某⼀⾏,读取整列的数据/*如果是xls格式,使⽤HSSFWorkbook,HSSFSheet,HSSFRow来进⾏相关操作如果是xlsx格式,使⽤XSSFWorkbook,XSSFSheet,XSSFRow来进⾏相关操作,⽬前只⽀持xlsx*/public static HashMap readExcelData(String filename, Integer row, Integer column,Integer sheet) throws IOException {//⽤于存储Exce读取数据HashMap<Integer,String> hashMap=new HashMap();("开始读取excel数据");//读取excel数据File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);//获取sheet表格,及读取单元格内容XSSFSheet xssfSheet=xssfWorkbook.getSheetAt(sheet);//先将获取的单元格设置为String类型,下⾯使⽤getStringCellValue获取单元格内容Integer cellIndex = 0;while(cellIndex<=column){//第⼀列为空时直接,赋值为空if (xssfSheet.getRow(row)==null || xssfSheet.getRow(row).getCell(cellIndex)==null){hashMap.put(cellIndex,"");cellIndex++;continue;}xssfSheet.getRow(row).getCell(cellIndex).setCellType(CellType.STRING);String stringValue=xssfSheet.getRow(row).getCell(cellIndex).getStringCellValue();hashMap.put(cellIndex,stringValue);cellIndex++;}("readExcelData:{}",hashMap.toString());return hashMap;}Java读取excel图⽚:获取整个excel的图⽚,可以按照指定的⾏和列来定位读取图⽚/*** 获取Excel中的图⽚* @param xssfSheet* @return*/public static Map<String, XSSFPictureData> getPictures(XSSFSheet xssfSheet){Map<String,XSSFPictureData> map=new HashMap<>();List<XSSFShape> list=xssfSheet.getDrawingPatriarch().getShapes();for (XSSFShape shape:list){XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor xssfClientAnchor=(XSSFClientAnchor) picture.getAnchor();XSSFPictureData pdata = picture.getPictureData();// ⾏号-列号String key = xssfClientAnchor.getRow1() + "-" + xssfClientAnchor.getCol1();("key数据:{}",key);map.put(key, pdata);}return map;}实际调⽤测试@Testpublic void test() throws IOException, UnirestException {String filename="classpath:file/org.xlsx";File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);Map<String, XSSFPictureData> map=getPictures(xssfWorkbook.getSheetAt(0)); String mapKey="3-15";//指定⾏和列XSSFPictureData xssfPictureData= map.get(mapKey);byte[] data =xssfPictureData.getData();FileOutputStream out = new FileOutputStream("/Users/test12.png");out.write(data);out.close();}}jar包版本<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>。

数据库中Image类型的数据的存取(ForC#ASP.NET)

数据库中Image类型的数据的存取(ForC#ASP.NET)

数据库中Image类型的数据的存取(ForC#)1.将Image图像⽂件存⼊到数据库中我们知道数据库⾥的Image类型的数据是"⼆进制数据",因此必须将图像⽂件转换成字节数组才能存⼊数据库中.要这⾥有关数据的操作略写,我将⼀些代码段写成⽅法,⽅便直接调⽤.1//根据⽂件名(完全路径)2public byte[] SetImageToByteArray(string fileName)3 {4 FileStream fs = new FileStream(fileName, FileMode.Open);5int streamLength = (int)fs.Length;6byte[] image = new byte[streamLength];7 fs.Read(image, 0, streamLength);8 fs.Close();9return image;10 }1112//另外,在中通过FileUpload控件得到的图像⽂件可以通过以下⽅法13public byte[] SetImageToByteArray(FileUpload FileUpload1)14 {15 Stream stream = FileUpload1.PostedFile.InputStream;16byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];17 stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);18 stream.Close();19return photo;20 }2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像⽂件1//要使⽤SqlDataReader要加载using System.Data.SqlClient命名空间2//将数据库中的Image类型转换成byte[]3public byte[] SetImage(SqlDataReader reader)4 {5return (byte[])reader["Image"];//Image为数据库中存放Image类型字段6 }78//将byte[]转换成Image图像类型9//加载以下命名空间using System.Drawing;/using System.IO;10using System.Data.SqlClient;*/11public Image SetByteToImage(byte[] mybyte)12 {13 Image image;14 MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);15 image = Image.FromStream(mymemorystream);16return image;17 }。

Java从数据库中读取Blob对象图片并显示的方法

Java从数据库中读取Blob对象图片并显示的方法

Java从数据库中读取Blob对象图⽚并显⽰的⽅法本⽂实例讲述了Java从数据库中读取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中如何读取ORACLE中BLOB字段存储的图片

java中如何读取ORACLE中BLOB字段存储的图片
<TD rowspan="5" align="center">
<iframe name="resultframe" id="resultframe" src="<%=imgsrc %>" marginwidth=1 marginheight=1 frameborder=0 width="100" height="115" scrolling="no"></iframe>
}
%>
以上就是这个实例,希望能对大家有所帮助~~~,更希望大家能留下你的意见或者建议,谢谢!!
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import common.utils.DataSourceFactory;
** 当前版本:1.0
** 作 者:李森
** 完成日期:2009-5-12
public class QueryPhoto {
Connection conn =null;
String sql = "";
public byte[] GetImgByteById(int id){
byte[] data = null;
try {
conn = DataSourceFactory.getFactory().getConnection();

java获取照片信息---Java与图像的EXIF信息

java获取照片信息---Java与图像的EXIF信息

首先介绍一下什么是EXIF,EXIF是Exchangeable Image File的缩写,这是一种专门为数码相机照片设定的格式。

这种格式可以用来记录数字照片的属性信息,例如相机的品牌及型号、相片的拍摄时间、拍摄时所设置的光圈大小、快门速度、ISO等等信息。

除此之外它还能够记录拍摄数据,以及照片格式化方式,这样就可以输出到兼容EXIF格式的外设上,例如照片打印机等。

目前最常见的支持EXIF信息的图片格式是JPG,很多的图像工具都可以直接显示图片的EXIF 信息,包括现在的一些著名的相册网站也提供页面用于显示照片的EXIF信息。

本文主要介绍Java语言如何读取图像的EXIF信息,包括如何根据EXIF信息对图像进行调整以适合用户浏览。

目前最简单易用的EXIF信息处理的Java包是Drew Noakes写的metadata-extractor,该项目最新的版本是2.3.0,支持EXIF 2.2版本。

你可以直接从/code/exif/ 下载该项目的最新版本包括其源码。

需要注意的是,并不是每个JPG图像文件都包含有EXIF信息,你可以在Windows资源管理器单击选中图片后,如果该图片包含EXIF信息,则在窗口状态栏会显示出相机的型号,如下图所示:拍摄设备的型号便是EXIF信息中的其中一个。

下面我们给出一段代码将这个图片的所有的EXIF信息全部打印出来。

package com.liusoft.dlog4j.test;import java.io.File;import java.util.Iterator;import com.drew.imaging.jpeg.JpegMetadataReader;import com.drew.metadata.Directory;import com.drew.metadata.Metadata;import com.drew.metadata.Tag;import com.drew.metadata.exif.ExifDirectory;/*** 测试用于读取图片的EXIF信息* @author Winter Lau*/public class ExifTester {public static void main(String[] args) throws Exception {File jpegFile = new File("D:\\我的文档\\我的相册\\DSCF1749.JPG");Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);Directory exif = metadata.getDirectory(ExifDirectory.class);Iterator tags = exif.getTagIterator();while (tags.hasNext()) {Tag tag = (Tag)tags.next();System.out.println(tag);}}}把metadata-extractor-2.3.0.jar文件加入到类路径中编译并执行上面这段代码后可得到下面的运行结果:[Exif] Make - FUJIFILM[Exif] Model - FinePix A205S[Exif] Orientation - Top, left side (Horizontal / normal)[Exif] X Resolution - 72 dots per inch[Exif] Y Resolution - 72 dots per inch[Exif] Resolution Unit - Inch[Exif] Software - Digital Camera FinePix A205S Ver1.00[Exif] Date/Time - 2005:05:13 22:18:49[Exif] YCbCr Positioning - Datum point[Exif] Copyright -[Exif] Exposure Time - 1/60 sec[Exif] F-Number - F3[Exif] Exposure Program - Program normal[Exif] ISO Speed Ratings - 320[Exif] Exif Version - 2.20[Exif] Date/Time Original - 2005:05:13 22:18:49[Exif] Date/Time Digitized - 2005:05:13 22:18:49[Exif] Components Configuration - YCbCr[Exif] Compressed Bits Per Pixel - 3 bits/pixel[Exif] Shutter Speed Value - 1/63 sec[Exif] Aperture Value - F3[Exif] Brightness Value - -61/100[Exif] Exposure Bias Value - 0 EV[Exif] Max Aperture Value - F3[Exif] Metering Mode - Multi-segment[Exif] Light Source - Unknown[Exif] Flash - Flash fired, auto[Exif] Focal Length - 5.5 mm[Exif] FlashPix Version - 1.00[Exif] Color Space - sRGB[Exif] Exif Image Width - 1280 pixels[Exif] Exif Image Height - 960 pixels[Exif] Focal Plane X Resolution - 1/2415 cm[Exif] Focal Plane Y Resolution - 1/2415 cm[Exif] Focal Plane Resolution Unit - cm[Exif] Sensing Method - One-chip color area sensor[Exif] File Source - Digital Still Camera (DSC)[Exif] Scene Type - Directly photographed image[Exif] Custom Rendered - Normal process[Exif] Exposure Mode - Auto exposure[Exif] White Balance - Auto white balance[Exif] Scene Capture Type - Standard[Exif] Sharpness - None[Exif] Subject Distance Range - Unknown[Exif] Compression - JPEG (old-style)[Exif] Thumbnail Offset - 1252 bytes[Exif] Thumbnail Length - 7647 bytes[Exif] Thumbnail Data - [7647 bytes of thumbnail data]从这个执行的结果我们可以看出该照片是在2005年05月13日22时18分49秒拍摄的,拍摄用的相机型号是富士的FinePix A205S,曝光时间是1/60秒,光圈值F3,焦距5.5毫米,ISO值为320等等。

java 读取并保存excel中的图片件

java 读取并保存excel中的图片件

java 读取并保存excel中的图片收藏/** 保存excel中的图片(以文件形式保存,或者存入数据库)** basePath:应用所在路径,附件存放路径:* 参数:is是上传的附件文件流*/public void saveSheetImgByFile(String basePath,InputStream is) throws ParseException { FileOutputStream os = null;try {Workbook wbk = Workbook.getWorkbook(is);//建文件目录File mkFile = new File(basePath);if (!mkFile.exists() && !mkFile.isDirectory()) {mkFile.mkdirs();}// 循环所有sheetfor (int k = 0; k < wbk.getNumberOfSheets(); k++) {Sheet sheet = wbk.getSheet(k);// 共有多少行int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数// 循环sheet的所有图片for (int i = 0; i < imgNumber; i++) {Image image = sheet.getDrawing(i);byte[] imageData = image.getImageData();String fileName = image.getImageFile().getName().trim()+ ".jpg";File file = new File(basePath+"/" + fileName);os = new FileOutputStream(file);// 建立一个上传文件的输出流os.write(imageData, 0, imageData.length);// 将文件写入服务器}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (os != null) {os.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/** 将excel图片文件保存到数据库*/public void saveSheetImgByDB(InputStream is) throws ParseException,ClassNotFoundException, SQLException, IOException {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8", "root", "root");String INSERT_PICTURE = "insert into t_mypicture(name, photo) values (?, ?)";PreparedStatement ps = null;FileOutputStream os = null;try {Workbook wbk = Workbook.getWorkbook(is);// 循环所有sheetfor (int k = 0; k < wbk.getNumberOfSheets(); k++) {Sheet sheet = wbk.getSheet(k);// 共有多少行int imgNumber = sheet.getNumberOfImages();// 获得sheet所包含的图片数// 循环sheet的所有图片for (int i = 0; i < imgNumber; i++) {Image image = sheet.getDrawing(i);byte[] imageData = image.getImageData();String fileName = image.getImageFile().getName().trim() + ".jpg";conn.setAutoCommit(false);ps = conn.prepareStatement(INSERT_PICTURE);ps.setString(1, fileName);ps.setBytes(2, imageData);ps.executeUpdate();mit();}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (os != null) {os.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}2.action方法调用:ImportExcelUtil ieu = new ImportExcelUtil();ExcelForm excelForm = (ExcelForm) form;FormFile file = excelForm.getExcelFile();// 附件方式保存String basePath = request.getSession().getServletContext().getRealPath( "/")+"excelFile";try {ieu.saveSheetImgByFile(basePath,file.getInputStream());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}// 数据库方式保存try {ieu.saveSheetImgByDB(file.getInputStream());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}引文来源java 读取并保存excel中的图片- LIUJIMMY的专栏- CSDN博客。

用JSP实现将图片存入数据库或从数据库中取出

用JSP实现将图片存入数据库或从数据库中取出

数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。

通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。

但是,如果我们想动态的显示图片,上述方法就不能满足需要了。

我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。

实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。

2、建立后台数据库假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。

我们要存取的数据表结构的SQL脚本如下所示:if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[picturenews]GOCREATE TABLE [dbo].[picturenews] ([id] [int] IDENTITY (1, 1) NOT NULL ,[image] [image] NULL ,[content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,[detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO表picturenews中,字段id作为标识,每存储一行数据,自动增加1。

字段image 用于存储图片信息,其数据类型为“image”。

3、向数据库存储二进制图片启动Dreamweaver MX后,新建一个JSP文件。

其代码如下所示。

<%@ page contentType="text/html;charset=gb2312"%><HTML><HEAD><TITLE>存储图片</TITLE></HEAD><body><!-- 下面的窗体将以Post方法,将数据传递给testimage.jsp文件 --><FORM METHOD=POST ACTION="testimage.jsp">新闻标题:<INPUT TYPE="text" NAME="content"><BR>新闻图片:<INPUT TYPE="file" NAME="image"><BR>新闻内容:<TEXTAREA name="txtmail" rows="15" cols="90"style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;HEIGHT: 200px; WIDTH: 100%" wrap="physical" ></TEXTAREA><br><INPUT TYPE="submit"></form></HTML>将此文件保存为InputImage.jsp文件,其中testimage.jsp文件是用来将图片数据存入数据库的,具体代码如下所示:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序类Connectioncon=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");//建立数据库联机,其中denglu为数据库名,sa为连接数据库的帐号及密码。

实现java读取网页内容并下载网页中出现的图片

实现java读取网页内容并下载网页中出现的图片

http:package com;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .MalformedURLException;import .URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class GetContentPicture {public void getHtmlPicture(String httpUrl) {URL url;BufferedInputStream in;FileOutputStream file;try {System.out.println("取网络图片");String fileName = httpUrl.substring(stIndexOf("/")); String filePath = "./pic/";url = new URL(httpUrl);in = new BufferedInputStream(url.openStream());file = new FileOutputStream(new File(filePath+fileName));int t;while ((t = in.read()) != -1) {file.write(t);}file.close();in.close();System.out.println("图片获取成功");} catch (MalformedURLException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public String getHtmlCode(String httpUrl) throws IOException {String content ="";URL uu = new URL(httpUrl); // 创建URL类对象BufferedReader ii = new BufferedReader(new InputStreamReader(uu.openStream())); // //使用openStream得到一输入流并由此构造一个BufferedReader对象String input;while ((input = ii.readLine()) != null) { // 建立读取循环,并判断是否有读取值content += input;}ii.close();return content;}public void get(String url) throws IOException {String searchImgReg ="(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg |JPG|png|PNG|gif|GIF)))('|\")";String searchImgReg2 ="(?x)(src|SRC|background|BACKGROUND)=('|\")(http://([\\w-]+\\.)+[\\w-]+( :[0-9]+)*(/[\\w-]+)*(/[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";String content = this.getHtmlCode(url);System.out.println(content);Pattern pattern = pile(searchImgReg);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println(matcher.group(3));this.getHtmlPicture(url+matcher.group(3));}pattern = pile(searchImgReg2);matcher = pattern.matcher(content);while (matcher.find()) {System.out.println(matcher.group(3));this.getHtmlPicture(matcher.group(3));}// searchImgReg =//"(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg |JPG|png|PNG|gif|GIF)))('|\")";}public static void main(String[] args) throws IOException {String url = "/";GetContentPicture gcp = new GetContentPicture();gcp.get(url);}}。

JAVA提取PDF中文本、图片

JAVA提取PDF中文本、图片

JAVA提取PDF中文本、图片Java 提取PDF中文本和图片PDF常携带大量且还原度高的信息内容,有时为了获得一些必要的数据我们需要从PDF 中读取文本和图片信息。

下面这篇文章将介绍通过Java实现提取PDF的文本和图片。

工具使用:●Free Spire Pdf for Java 2.4.4 (免费版)●Intellij IDEA导入Jar 包:首先,获取Free Spire.PDF for Java之后解压,以下是三种方式在IDEA中快速打开Project Structure界面;如下图:然后:①选择“Modules”—“Dependencies”,添加外置jar 包;②进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③勾选jar路径选项,点击”OK”/”Apply”;④导入完成。

如下图:测试源文档参考如下:Java 代码示例参考:【示例 1】提取PDF 中文本内容步骤一:添加命名空间;import com.spire.pdf.*; import java.io.FileWriter ;步骤二:创建PDF实例和加载PDF源文件;//创建PDF实例PdfDocument doc = new PdfDocument();//加载PDF源文件doc.loadFromFile("data/PDF_3.pdf");步骤三:使用StringBuilder方法定义一个字符缓冲区实例,for 循环遍历整个PDF文档;// 遍历PDF文档StringBuilder buffer = new StringBuilder();for(int i = 1; i<="" p="">PdfPageBase page = doc.getPages().get(i);buffer.append(page.extractText());}步骤四:定义一个writer实例将数据写到缓冲区,使用write()将缓冲区的数据写入text.txt 文件并保存。

基于Java语言的图像数据库存取技术

基于Java语言的图像数据库存取技术

R 0 删 鲫d m^
i r ( 】 f e p ; s 其它 OD s uS r - BC Q ew ̄ 驱 动程 序
图 1
) c 咖h( { Ⅱ E n o 】 砌 t d e . S i ̄ 】 I 1 t t n( ; or  ̄th I x p t 2 I c ( c lm e ) OE e l
表 1
多媒体数字 图像 的存储 格式主要有矢量 图形和 位图图像 两大娄 。前者常用 的格式有 WMF D W、 D 、 P 、 X 、 L、 、 R C R ESD F F1 F C C M等 ; L 、G 后者 常用 的格式 有 B P P X GF TF M 、C 、I、I F等 。本 文以 GF文件为例 , I 介绍文件的读取 与存 取。
台形 成的一个综合性技术 。而图像技术又是多媒体技术 中最 重要的部分。
参数化的 s L Q 语句 , 以用 于 s L 可 Q 语句 和返 回结 果集的 s L Q
查询。

2 读取多媒体 图像 文件 数据
以 GF文件作为待读取的图像文件 为例。表 1为 GF图 1 I 像格式的文件头。
收稿 日期 :0 1— 6—2 20 0 1
程序首先打 开一个 G F图像文件 , 着剖建一个 F e I 接 i 类 l
作者茼 介 : 昱立钊 (92 , , 研究 生, 1 一)男 砸士 7 主要研 究方 向 : 络图像 、 库 ; 王 耀南 (9 一)男 , , 士生 导师 , 研究 方 向: 网 数据 1 7 . 教授 博 5 主要 图
数据库 中取 出图像数据 , 并可 以通过浏览 器浏览 。
关键 词 :aaAD 图像 数 据 库 Jv ; O; 中图分类号 : P 1J 文 献标识码 : T 3 2A A

用Java从Doc和Docx格式的Word文档中提取图片

用Java从Doc和Docx格式的Word文档中提取图片

用JaVa从DOC和DOCX格式的Word文档中提取图片DOC和DOCX的文档格式因为存储格式不一样,所以需要用不通的方法提取图片。

DOCX格式的文档实际上是压缩文件,用程序提取图片相对实际上只需要对文章进行解压缩,然后到指定文件夹找到图片即可。

DOe文档则需要把图片数据读出来,再生成文件。

下面代码均可直接运行。

从DoCX文件中提取图片的代码:package com.on1an.docx;import java・io,BufferedInputStream;import java.io.BufferedOutputStream;import java.io.Fi1e;import java.io.Fi1eOutputStream;import java.uti1.Enumeration;import java.uti1.zip.ZipEntry;import java.uti1.zip.ZipFi1e;pub1icc1ass ImgExt4Docx{∕***@param args*/staticfina1int BUFFER=2048;pub1icstaticvoid main(String[]args){String inputFi1ename = ”D:/WOrk/test.docx”;String UnZipPathname = ,,D√work∕unZipDir∕";ImgExt4Docx ied=new ImgExt4Docx();System.out.printIn(ied.unZipDocx(inputFi1ename j Un ZipPathname));)∕**returnthefo1doftheimages*/pub1ic StringunZipDocx(Stringdocxfi1e,Stringdes tDir)try{StringinputFi1ename=docxfi1e;StringUnZipPathname=destDir;ZipFi1eZiPFi1e=new ZipFi1e(inputFi1ename );EnUrneratiOn enu = zipFi1e.entries();int i=0;whi1e(enu.hasMoreE1ements()){ZipEntryZipEntry=(ZipEntry)enu.next E1ement();if(zipEntry.isDirectory()){newFi1e(unZipPathname+zipEntry.getName()).mkdirs();continue;)BufferedInputStreambis=new BufferedInputStream(zipFi1e.getInputStream(zipEntry)) ;Fi1efi1e=newFi1e(unZipPathname+zipEntry.getName());Fi1e parent = fi1e.getParentFi1e();if(parent!=nu11&&!parent.exists()){parent.mkdirs();}Fi1eOutputStreamfos=new Fi1eOutputSt ream(fi1e);BufferedOutputStreambos=new Buffered OutputStream(fos jβt∕FFE^∕?);int count;byte[]array=new byte[BUFFER];whi1e((count=bis.read(array j0j BUFFE R))!=-1){bos.write(array,0,BUFFER);bos.f1ush();bos.c1ose();bis.c1ose();)return destDir+"word∕mediaπ;}catch(Exceptione){e・printStackTrace();returnnu11;)))从Doc文件中提取图片的代码,该代码不仅可以从文档中提取图片,还可以把DOC文档中图片所在位置加上标签以及图片文件名,与提取的图片对应起来:package com.on1an;import java.io.Fi1e;import java.io.Fi1eInputStream;import java.io.Fi1eOutputStream;import java.io.Inputstream;import java.io.OutputStream;import org.apache.poi.hwpf.HWPFDocument;importorg.apache.poi.hwpf.mode1.PicturesTab1e;importorg・ermode1.CharacterRun;import ermode1.Picture;import ermode1.Range;pub1icc1ass ImgExt4Doc{pub1icvoid readWord(StringdocFi1e j StringimgStoreDi r)throws Exception(Fi1ef=new Fi1e(docFi1e);/ // Fi1ef=newFi1e("D:∖∖work∖∖test.docπ);//InputStreamin=new Fi1eInputStream(f);HWPFDocument msWord=new HWPFDocument(in);Stringtext="”;PicturesTab1e pTab1e = ms∣Λ∣ord.getPicturesTab1e();intnumCharacterRuns = ms∣Λ∣ord.getRange().numCharacterRuns();// Array1ist <PAPX>p1ist=ms∣Λ∣ord.getParagraphTab1e().getParagraphs();//PAPXp=p1ist.get(0);int under1inecode=0;int im-count=0;OutputStreamout=nu11;int StartOffset=0j endoffset;int enterCount=0;for(int i=0;i<numCharacterRuns;i++)(CharacterRunCharacterRun=msWord.getRange ().getCharacterRun(i);startoffset=CharacterRun.getStartOffset();characterRun.get11nder1 ineCode();endθffset=CharaCterRUn.getEndOffset();I IIIIIIIIIIIIIIIIIIfor(int m =staPtOffset;m<endOffset;m++){I IIIIIIIIIIII Rangerange=new Range(m,m+1,msWord);int hashCode=range.text().hashCode ();//System.out.printIn(range,text()+,,--π+hashCode);CharacterRuncr=range.getCharacterRun(0); under1inecode = cr.getUnder1ineCode();if(under1inecode!= 0 && range.text()!=nu11){text=text)if(m<endOffset&&(hashCode==131IhashCode==7))∕∕get1ine(enterCount++;〃System.out.printIn("ENTERFIND ......... ,1+enterCount);)text=text+range.text();)I IIIIIIIIIIIIIIIIIIif(pTab1e.hasPicture(CharacterRun)){〃是图片则把图片位置替换为image标签,再把图片输出到指定位置Picturepic = pTab1e.extractPicture(characterRun true);String fi1eName = pic・SuggestFu11Fi1eNameO;byte[]content=pic.getContent();out=new Fi1eOutputStream(newFi1e(imgStoreDir+Fi1e.separator+fi1eName));//savepict ure out.write(content);out.f1ush();out.c1ose();text=text+,,<imagesrc=,,,十fi1eName+imgcount++;})in.c1ose();System.out.printIn(text);)∕***@param args*/pub1icstaticvoid main(String[]args)throws Exception {//TODO Auto-generatedmethodstubImgExt4Docpt1=new ImgExt4Doc();pt1.readWord(,,D:∖∖work∖∖test.doc,,j"D:\\work∖∖imgθutput∖∖π);) )。

Java读取图片文件的类型(MimeType)

Java读取图片文件的类型(MimeType)

Java读取图⽚⽂件的类型(MimeType)⼀、问题描述在项⽬开发的时候,我们经常会遇到⼀类⽂件上传的问题,就是获取图⽚是哪种格式。

很多情况下,很多⼈都是⽤后缀名去判断,如下所⽰。

if(filename.endsWith(".png") || filename.endsWith(".jpg")){//保存图⽚}else{throw new IOException("Error file format !");}但是这种⽅式相当不可靠,我们可以尝试将zip⽂件、rmvb⽂件、css、js修改后缀名位jpg或者png上传,也可以上传到服务器,这就造成我们服务器上出现了脏数据。

此外,对于有些图⽚⽂件,修改成错误的扩展名,有些浏览器可能⽆法显⽰出此图⽚。

⼆、解决⽅案在计算机系统中,媒体类型(MimeType)的⽂件都有【标识符】,zip、图⽚本⾝属于媒体⽂件,因此我们可以通过编解码的⽅式判断图⽚是否合法。

1、判断标⽰⽅法private static boolean isBMP(byte[] buf){byte[] markBuf = "BM".getBytes(); //BMP图⽚⽂件的前两个字节return compare(buf, markBuf);}private static boolean isICON(byte[] buf) {byte[] markBuf = {0, 0, 1, 0, 1, 0, 32, 32};return compare(buf, markBuf);}private static boolean isWEBP(byte[] buf) {byte[] markBuf = "RIFF".getBytes(); //WebP图⽚识别符return compare(buf, markBuf);}private static boolean isGIF(byte[] buf) {byte[] markBuf = "GIF89a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}markBuf = "GIF87a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}return false;}private static boolean isPNG(byte[] buf) {byte[] markBuf = {(byte) 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A}; //PNG识别符// new String(buf).indexOf("PNG")>0 //也可以使⽤这种⽅式return compare(buf, markBuf);}private static boolean isJPEGHeader(byte[] buf) {byte[] markBuf = {(byte) 0xff, (byte) 0xd8}; //JPEG开始符return compare(buf, markBuf);}private static boolean isJPEGFooter(byte[] buf)//JPEG结束符{byte[] markBuf = {(byte) 0xff, (byte) 0xd9};return compare(buf, markBuf);}2、核⼼⽅法/*** 获取⽂件的mimeType* @param filename* @return*/private static String getMimeType(String filename){try {String mimeType = readType(filename);return String.format("image/%s", mimeType);} catch (IOException e) {e.printStackTrace();}return null;}/*** 读取⽂件类型* @param filename* @return* @throws IOException*/private static String readType(String filename) throws IOException {FileInputStream fis = null;try {File f = new File(filename);if(!f.exists() || f.isDirectory() || f.length()<8) {throw new IOException("the file ["+f.getAbsolutePath()+"] is not image !");}fis= new FileInputStream(f);byte[] bufHeaders = readInputStreamAt(fis,0,8);if(isJPEGHeader(bufHeaders)){long skiplength = f.length()-2-8; //第⼀次读取时已经读了8个byte,因此需要减掉byte[] bufFooters = readInputStreamAt(fis, skiplength, 2);if(isJPEGFooter(bufFooters)){return "jpeg";}}if(isPNG(bufHeaders)){return "png";}if(isGIF(bufHeaders)){return "gif";}if(isWEBP(bufHeaders)){return "webp";}if(isBMP(bufHeaders)){return "bmp";}if(isICON(bufHeaders)){return "ico";}throw new IOException("the image's format is unkown!");} catch (FileNotFoundException e) {throw e;}finally{try {if(fis!=null) fis.close();} catch (Exception e) {}}}/*** 标⽰⼀致性⽐较* @param buf 待检测标⽰* @param markBuf 标识符字节数组* @return返回false标⽰标⽰不匹配*/private static boolean compare(byte[] buf, byte[] markBuf) {for (int i = 0; i < markBuf.length; i++) {byte b = markBuf[i];byte a = buf[i];if(a!=b){return false;}}return true;}/**** @param fis 输⼊流对象* @param skiplength 跳过位置长度* @param length 要读取的长度* @return字节数组* @throws IOException*/private static byte[] readInputStreamAt(FileInputStream fis, long skiplength, int length) throws IOException {byte[] buf = new byte[length];fis.skip(skiplength); //int read = fis.read(buf,0,length);return buf;}3、测试代码正常测试public class ImageType {public static void main(String[] args) {String filename = "oschina.jpg";String type = getMimeType(filename);System.out.println(type);}}输出image/jpeg修改扩展名测试①修改oschina.jpeg为oschina.png②复制oschina.png删除扩展名public class ImageType {public static void main(String[] args) {String filename = "oschina.png";String type = getMimeType(filename);System.out.println(type);filename = "oschina";type = getMimeType(filename);System.out.println(type);}}输出image/jpegimage/jpeg。

java保存数组到数据库的方法

java保存数组到数据库的方法

在Java编程中,我们经常需要将数组中的数据保存到数据库中。

这篇文章将介绍一些常见的方法和技巧,来帮助你在Java中实现这一功能。

一、使用JDBC保存数组数据到数据库1. JDBC(Java Database Connectivity)是Java用于与数据库进行连接和操作的一套API。

我们可以使用JDBC来将数组中的数据保存到数据库中。

2. 我们需要在Java程序中引入JDBC相关的包,然后通过JDBC连接数据库、创建SQL语句,并执行插入操作。

3. 对于数组,我们通常需要使用循环来逐个将数组中的数据插入到数据库中。

这里需要注意的是,不同的数据库可能对于插入数据的方式有一些差异,需要根据具体的数据库类型来编写相应的SQL语句。

4. 在使用JDBC操作数据库的过程中,我们需要注意异常处理和资源释放,以确保程序的稳定性和性能。

二、使用ORM框架保存数组数据到数据库1. 除了直接使用JDBC操作数据库外,我们还可以通过ORM (Object-Relational Mapping)框架来简化数据库操作。

ORM框架可以将Java对象与数据库表进行映射,从而实现对象的持久化。

2. 使用ORM框架保存数组数据到数据库,通常需要首先定义好对应的实体类,并在实体类中设置数组属性。

3. 我们需要配置ORM框架的映射规则,以及数据库连接等相关信息。

4. 我们可以通过ORM框架提供的API来操作数据库,将数组中的数据保存到数据库中。

ORM框架会帮助我们生成对应的SQL语句,并执行数据库操作。

5. 在使用ORM框架时,我们需要注意配置文件的编写、映射关系的设置以及性能优化等方面。

三、使用Spring Data JPA保存数组数据到数据库1. Spring Data JPA是Spring框架中的一个子项目,它提供了一种简化数据库访问的方式。

通过Spring Data JPA,我们可以很方便地将数组数据保存到数据库中。

2. 我们需要在Spring项目中引入Spring Data JPA相关的依赖,然后配置好数据源和实体类。

java中的imageio.write 用法 -回复

java中的imageio.write 用法 -回复

java中的imageio.write 用法-回复Java中的imageio.write用法是用来将图片数据写入到指定的文件中。

该方法是Java标准库提供的一个较为常用的图像处理方法,它可以将一张图片保存到本地文件系统中,或者将图片数据写入到其他容器中,比如内存中的字节数组、数据库等。

在Java中,使用imageio.write方法需要先加载相关的图像处理库,具体的操作流程如下:1. 导入相关库首先,需要导入Java标准库中的javax.imageio包和java.io包,以便使用相关的类和方法。

在代码的开头,使用import语句导入这两个包:javaimport javax.imageio.ImageIO;import java.io.*;2. 加载图片使用ImageIO类的静态方法read来加载图片文件。

read方法接受一个File对象作为参数,该对象表示待读取的图片文件。

读取成功后,read方法会返回一个BufferedImage 对象,它包含了图片的所有像素数据:javaFile inputFile = new File("input.jpg");BufferedImage bufferedImage = ImageIO.read(inputFile);3. 写入图片使用ImageIO类的静态方法write来将图片数据写入到指定的文件中。

write方法接受三个参数:一个BufferedImage 对象、一个表示输出文件的字符串和一个表示图片格式的字符串。

代码示例如下:javaFile outputFile = new File("output.jpg");ImageIO.write(bufferedImage, "jpg", outputFile);在写入图片时,需要注意输出文件的路径和文件名。

如果文件不存在,write 方法会自动创建一个新文件;如果文件已存在,write方法会覆盖原文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

contentPane.add(label,BorderLayout.CENTER);
f.setTitle("JAVA向数据库中存取图片的演示");
f.pack();
f.show();
}
}
注:本程序的在WINXP+SQLserver2000+JDK1.5测试通过
package org.liuyou.insertphotodemo;
/**
* <p>Title: InsertPhotoDemo</p>
* <p>Description: 本程序用于演示向数据库中插入图片及从数据库中读取图片</p>
ResultSet rs = pstm.executeQuery();
if(rs.next())
{
imageByte = rs.getBytes(1);
Image selectPhoto = Toolkit.getDefaultToolkit().createImage(imageByte);
String readSql = "select PHOTO from TEST where TESTID=?";
PreparedStatement pstm = con.prepareStatement(readSql);
pstm.setString(1,"1");
pstmt.setString(2,"liuyou");
pstmt.executeUpdate();
pstmt.close();
fis.close();
/* 读取图片 */
byte [] imageByte;
System.out.println(file.length());
FileInputStream fis = new FileInputStream(file);
pstmt.setBinaryStream(1,fis,(int)file.length());
{
ex.printStackTrace();
}catch(SQLException ex)
{
ex.printStackTrace();
}catch(FileNotFoundException ex)
{
ex.printStackTrace();
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: LIUYOU STUDIO</p>
* @author liuyou(zhliuyou)
* @version 1.0
*/
import java.io.*;
import java.sql.*;
/* 存入图片 */
String sql="insert into TEST values(?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
File file = new File("e:/study/javafile/InsertPhotoDemo/test.jpg");
JAVA向数据库中存取图片的演示
在网上看到很多贴子,问JAVA怎样才能将图片存入数据库,并从数据中显示出来。是啊,我当年也问过这样的问题,也在网上找过,不过都没有一个完整的程序,一个很简单的程序,让我走了很多的弯路,后来写的东西多了,问题就迎刃而解了,现写了一个完整的程序并把源程序贴出来,希望对你了解JAVA这方面的功能有一点帮助。由于没有写注解,如有什么不能理解的,可以发电子邮件给我(zhliuyou@),同时我也很乐意与喜欢JAVA的朋友们讨论JAVA方面问题:
ImageIcon icon = new ImageIcon(selectPhoto);
label.setIcon(ico();
rs.close();
}catch(ClassNotFoundException ex)
}catch(Exception ex)
{
ex.printStackTrace();
}
Container contentPane = f.getContentPane();
contentPane.setLayout(new BorderLayout());
import javax.swing.*;
import java.awt.*;
public class InsertPhotoDemo
{
public static void main(String args[])
{
JFrame f = new JFrame();
Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://10.1.5.110:1433;DatabaseName=MiniTuiBaoRobot","zhliuyou","zhliuyou");
JLabel label = new JLabel();
try
{
/* 加载数据库驱动程序 */
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
/* 获取连接,这里用的SQLServer2000*/
相关文档
最新文档