java圖片資料庫二進制
㈠ java涓 浠blob瀛樺偍鐨勫浘鐗囧備綍浠ヤ簩榪涘埗嫻佸湪jsp欏甸潰鏄劇ず錛岃屼笖鏄鎵歸噺鏄劇ず鍥劇墖錛屾眰浠g爜
// 鍚庡彴浠g爜
list瀛樺偍姣忓紶鍥劇墖鐨刦ileid
閽堝規瘡涓猣ile鍐欒緭鍑烘祦,鍐欏湪鍗曠嫭鐨刴ethod涓.
// jsp渚
<c:foreach val="file" items="list">
<img src="getimage.action?fileid" + "${file.fileid}" />
</c:foreach>
㈡ java 浜岀淮鐮佸浘鐗囪漿浜岃繘鍒跺瓨榪涙暟鎹搴 浣跨敤浠涔堟妧鏈鍙浠ュ疄鐜板憿錛
鏁版嵁搴撲嬌鐢╞lob綾誨瀷
鍥劇墖浣跨敤java io嫻佹搷浣滐紝灝嗗浘鐗囪漿鎹涓篵yte[]錛屽瓨鍏mysql涓
㈢ 浣跨敤JAVA浠ヤ簩榪涘埗嫻佺殑鏂瑰紡灝嗗浘鐗囧瓨鍒癕YSQL鏁版嵁搴撲腑鎬庝箞瀛樿︾粏涓鐐癸紒璋㈣阿錛
浠byte[]鏂瑰紡鑾峰彇鍒版枃浠舵暟鎹灝辮屼簡 瀛樻垚BLOB鐨
璇誨彇鐨勬椂鍊欐妸byte[]鍐嶈漿鎹㈡垚鏂囦歡鏍煎紡
㈣ Java中如何把圖片轉換成二進制流
Java中將圖片轉為二進制流只需要使用FileImageInputStream取得圖片文件,然後使用ByteArrayOutputStream 寫入到二進制流中即可,下面是詳細代碼:
//圖片到byte數組
publicbyte[]image2byte(Stringpath){
byte[]data=null;
FileImageInputStreaminput=null;
try{
input=newFileImageInputStream(newFile(path));
ByteArrayOutputStreamoutput=newByteArrayOutputStream();
byte[]buf=newbyte[1024];
intnumBytesRead=0;
while((numBytesRead=input.read(buf))!=-1){
output.write(buf,0,numBytesRead);
}
data=output.toByteArray();
output.close();
input.close();
}
catch(FileNotFoundExceptionex1){
ex1.printStackTrace();
}
catch(IOExceptionex1){
ex1.printStackTrace();
}
returndata;
}
另外,如果需要將byte[]存回圖片或轉為String,則:
//byte數組到圖片
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;
try{
=newFileImageOutputStream(newFile(path));
imageOutput.write(data,0,data.length);
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}
//byte數組到16進制字元串
publicStringbyte2string(byte[]data){
if(data==null||data.length<=1)return"0x";
if(data.length>200000)return"0x";
StringBuffersb=newStringBuffer();
intbuf[]=newint[data.length];
//byte數組轉化成十進制
for(intk=0;k<data.length;k++){
buf[k]=data[k]<0?(data[k]+256):(data[k]);
}
//十進制轉化成十六進制
for(intk=0;k<buf.length;k++){
if(buf[k]<16)sb.append("0"+Integer.toHexString(buf[k]));
elsesb.append(Integer.toHexString(buf[k]));
}
return"0x"+sb.toString().toUpperCase();
}
一種方法是把圖像文件本身放在某個文件夾里,然後在數據表裡設一個「路徑「欄位,類型為字元串,存圖像的路徑(比如「D:\files\xxx.jpg」)。
另一種方法是,把圖像文件本身,作為一個巨大的二進制數據,放在資料庫中;具體方法是,數據表中設置一個」數據「欄位,類型是二進制數據,存放圖像本體。
㈥ 璇烽棶java濡備綍寰鏁版嵁搴撻噷鎻掑叆浜岃繘鍒舵暟鎹錛
鐢ㄦ祦璇誨叆鍥劇墖,鍐嶇敤byte[]鏁扮粍璇誨彇杞鎹㈡祦涓鐨勫浘鐗囨暟鎹杞鎴愪簩榪涘埗.鎺ョ潃鐢↗DBC鎶婁簩榪涘埗鎻掑叆鏁版嵁搴撳瓨 oFileInputStream fis = null;// 澶勭悊紜鐩樼殑浣庣錛岃緭鍏ユ祦 o try { o fis = new FileInputStream( "鍥劇墖璺寰" );// 浣庣嫻佺粦瀹氱‖鐩樹笂鐨勬枃浠 o o byte [] buffer = new byte[ 1024 ]; o while ( true ) {// 寰鐜璇誨彇嫻侀噷鐨勬暟鎹 o int len = fis.read( buffer ); o if ( -1 == len ) {// 濡傛灉宸茬粡璇誨埌鏂囦歡鏈灝 o break; o } o ........//JDBC鎻掑叆浠g爜鍙瑕佹妸涓婇潰鐨刡uffer寰鐜鎻掑叆鏁版嵁搴撳瓨o } o } catch ( Exception e ) { o e.printStackTrace(); o } finally { o try { o fis.close(); o } catch ( Exception e ) { o e.printStackTrace(); o } o } o}