Java利用Eclipse和Mysql數據庫連接並存儲圖片——取出圖片

通過流和JPEGCodec、JPEGImageEncoder類的操作來取出數據庫中的圖片。
註釋很詳細,注意要額外的引入mysql的驅動包,要修改數據庫的用戶名和密碼以及URL。希望對大家有幫助。
import java.awt.p_w_picpath.BufferedImage;
import java.io.*;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.sun.p_w_picpath.codec.jpeg.JPEGCodec;
import com.sun.p_w_picpath.codec.jpeg.JPEGImageEncoder;
import javax.p_w_picpathio.ImageIO;
public class getImage {
 //連接數據庫的相關信息
 static String user = "username";//用自己的用戶名
 static String driver = "com.mysql.jdbc.Driver";
 static String password = "password";//用自己的密碼
 static String url = "jdbc:mysql://localhost:4017/p_w_picpath";//自己的數據庫地址
 public static void main(String[]args){
  try {
   Class.forName(driver);//加載驅動
   Connection con = DriverManager.getConnection(url,user,password);//獲得Connection對象
   PreparedStatement ps = con.prepareStatement("select photo from photo where name = 'z'");
   ResultSet rs = ps.executeQuery();
   rs.next();//移動到第一行上
   Blob blob = (Blob)rs.getBlob("photo");//獲得數據庫中的Blob對象,即圖像
   File file = new File("D:/1.jpg");//指定文件的輸出路徑和文件名
   if(!file.exists())//判斷,如果文件不存在,則創建文件
    file.createNewFile();
   FileOutputStream fos = new FileOutputStream(file);//根據指定的路徑,創建文件輸出流
   BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());//將得到的文件寫入流中
   //System.out.println(in);//測試內容是否爲空
   BufferedImage p_w_picpath = ImageIO.read(in);//將流轉換爲Image對象
   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
   encoder.encode(p_w_picpath);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章