MySQL數據庫是一種廣泛使用的關系型數據庫,可以輕松存儲各種類型的數據,包括圖像。然而,存儲圖像需要一種不同的方法,因為圖像數據需要以二進制格式儲存。在本文中,我們將學習如何使用MySQL數據庫保存圖像。
CREATE TABLE `image_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `image` longblob, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述代碼創建了一個包含圖像的數據表。表中包含三個字段:id、name和image。其中,id字段定義為自增主鍵,name字段定義為可選的圖像名稱,而image字段則是用于存儲圖像的二進制數據。
FileInputStream fis = new FileInputStream("image.jpg"); PreparedStatement ps = conn.prepareStatement("INSERT INTO image_table (name, image) VALUES (?, ?)"); ps.setString(1, "test image"); ps.setBinaryStream(2, fis, fis.available()); ps.executeUpdate();
上述代碼插入了一個名為 "test image" 的圖像數據到數據庫中。首先,代碼使用Java的FileInputStream類讀取圖像文件 "image.jpg" 的字節流。其次,使用Prepared Statement將圖像名稱和字節流綁定到SQL語句中,并使用executeUpdate方法執行SQL語句以將圖像數據保存到MySQL數據庫中。
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM image_table WHERE name = 'test image'"); if (rs.next()) { Blob blob = rs.getBlob("image"); InputStream is = blob.getBinaryStream(); OutputStream os = new FileOutputStream("new_image.jpg"); byte[] buffer = new byte[4096]; int length = 0; while ((length = is.read(buffer)) != -1) { os.write(buffer, 0, length); } os.close(); is.close(); }
上述代碼從數據庫中檢索圖像數據。首先,使用Java的Statement類執行一個SELECT查詢,以檢索與名稱為 "test image" 的圖像數據。接下來,使用ResultSet類從結果集中提取Blob對象,并將其轉換為InputStream以進行讀取。然后,使用Java的FileOutputStream類將圖像數據寫入新文件 "new_image.jpg" 中。最后,關閉輸入流和輸出流以釋放資源。
上一篇css平移掃光效果