首页 > 解决方案 > 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返回的多个图像?

标签: javaimage-processingbufferedimagejavax.imageio

解决方案


最后是车轮上的东西:

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

推荐阅读