java - Java 读取多个图像
问题描述
我有一个 Mysql 数据库,其中包含存储在本地驱动器中的图像路径。我需要编写一个 Java 程序来逐一读取这些图像。
我写了以下代码:
import java.sql.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ReadMultipleImages
{
public static void main(String[] args)
{
try
{
String myDriver = "com.mysql.cj.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost/db?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "user", "password");
String query = "SELECT * FROM test";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
String img = rs.getString("img");
BufferedImage in = ImageIO.read(new File(img));
System.out.println("Width of Image : " + in.getWidth());
}
st.close();
}
catch (Exception e)
{
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
}
}
它不适用于多个图像路径。但是,当我通过直接单个图像路径时:
BufferedImage in = ImageIO.read(new File('/tmp/frame_004.jpej'));
它给了我想要的确切结果。我的发现是它仅适用于单个图像路径不超过此。如何处理变量img返回的多个图像?
解决方案
最后是车轮上的东西:
import java.sql.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ReadMultipleImages
{
public static void main(String[] args)
{
try
{
String myDriver = "com.mysql.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:port/db_name?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "user", "password");
String query = "SELECT * FROM metadata";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
String srno = rs.getString("srno");
String path = rs.getString("path");
String file = rs.getString("file");
// PATH: /home/memon/images/, FILE: frame_1524043865776151594.jpeg
String loc = path + file;
System.out.println("location : " + loc);
BufferedImage in = ImageIO.read(new File(loc));
System.out.println("SRno. "+srno+" Width of Image : " + in.getWidth() + " X " + in.getHeight());
}
st.close();
}
catch (Exception e)
{
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
}
}
输出:
location : /home/memon/images/frame_1524043865776151594.jpeg
SRno. 0 Width of Image : 262 X 90
location : /home/memon/images/frame_1524043865776151595.jpeg
SRno. 1 Width of Image : 1920 X 1080
推荐阅读
- excel - 转置数据并插入行 - Excel VBA
- amazon-web-services - Lambda SDK 调用无响应
- node.js - writing nodejs applications in kotlin with intellij idea ce
- xml - 检索上周在 Taleo 中接受的报价
- c++ - 将 "enum: int64_t" 值写入 std::ostringstream 会将其截断为 int
- azure - 将 Linux 服务器连接到 Azure Log Analytics 工作区的代理的名称是什么?
- java - 在 JavaFX 中使用动画计时器时如何解决帧率下降问题?
- python - 使用 struct.pack 和 struct.unpack 的问题
- emacs - org-mode 表头格式未正确对齐
- c# - 具有可定义列的 WPF Datagrid UserControl