import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Logger logger = Logger.getGlobal();
logger.setLevel(Level.ALL);
logger.info("Logger set");
try {
Class.forName("com.mysql.jdbc.Driver");
logger.info("JDBC driver loaded");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "root");
logger.info("Connected to DB");
Statement statement = connection.createStatement();
statement.executeUpdate("CREATE DATABASE IF NOT EXISTS images;");
statement.executeUpdate("use images;");
statement.executeUpdate("CREATE TABLE IF NOT EXISTS images (\n" +
" id INT NOT NULL AUTO_INCREMENT,\n" +
" title VARCHAR(100) NOT NULL,\n" +
" image MediumBlob NOT NULL,\n" +
" PRIMARY KEY (id)\n" +
")\n" +
" ENGINE = InnoDB;");
File file = new File("/tmp/0.pgm");
FileInputStream inputStrem = new FileInputStream(file);
logger.info("FileInputStream created");
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO images VALUES (NULL, ?, ?)");
preparedStatement.setString(1, "Test File");
preparedStatement.setBinaryStream(2, inputStrem);
preparedStatement.execute();
logger.info("Insert query executed");
ResultSet resultSet = statement.executeQuery("SELECT image FROM images WHERE id = 1");
while (resultSet.next()) {
Blob blob = resultSet.getBlob("image");
MatOfByte imageByte = new MatOfByte(blob.getBytes(1, (int) blob.length()));
Mat imageMat = Imgcodecs.imdecode(imageByte,Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Imgcodecs.imwrite("/tmp/icon.png", imageMat);
System.out.println("The height of the retrieved image is " + imageMat.height());
System.out.println("The width of the retrieved image is " + imageMat.width());
}
connection.close();
logger.info("Connection closed");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
<pre name="code" class="sql">CREATE TABLE IF NOT EXISTS images (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
image MediumBlob NOT NULL,
PRIMARY KEY (id)
)
ENGINE = InnoDB;