gpt4 book ai didi

java - 我可以将从netbeans截取的屏幕截图保存到Mysql吗

转载 作者:行者123 更新时间:2023-12-01 16:28:57 24 4
gpt4 key购买 nike

我正在做一个项目,我决定将账单的屏幕截图保存到 mysql 数据库。但是用于截图的 ImageIcon 不提供文件的长度,因此 setBinaryStream() 不起作用,我尝试了 pstmt.setBlob (1, (BLOB)icon),仍然不起作用。

你能把截图直接保存到数据库吗,如果可以请告诉我。或者我可以在 netbeans 中创建并保存自定义账单吗?

try
{
Rectangle screen = new Rectangle (Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = new Robot().createScreenCapture(screen);
ImageIcon icon = new ImageIcon(capture);
int len = icon.getWidth();
ImageIO.write(capture,"jpg",new File("screenshot.jpg"));

try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Sign_up.class.getName()).log(Level.SEVERE, null, ex);
}
try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/webapp","root","")) {
Statement at = con.createStatement();
String qt = "insert into picture (Pictures) values (?)";
PreparedStatement pstmt = con.prepareStatement(qt);
pstmt.setBinaryStream (icon,);

}

最佳答案

您可以使用屏幕截图的字节创建一个 ByteArrayInputStream,然后使用 setBinaryStream(int,InputStream) 将其传递给准备好的语句,如下所示...

ps.setBinaryStream(1,new ByteArrayInputStream(baos.toByteArray()));

这是一个完整的程序,它获取屏幕截图,将其写入 BLOB,然后从 BLOB 中读取它,并将其写入文件(用于验证)。

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.imageio.ImageIO;

public class ScreenShot {

public static void main(String[] args) throws Exception {
if (args.length != 3) {
// Note: Don't pass passwords on the command line in real life.
System.err.println("Usage: java ScreenShot <dbUrl> <dbUser> <dbPwd>");
return;
}
// Capture the screenshot
Rectangle screen = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = new Robot().createScreenCapture(screen);

// Write it to a ByteArrayOutputStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(capture, "jpg", baos);

// Insert the bytes into the database
Connection connection = DriverManager.getConnection(args[0], args[1], args[2]);
String sql = "insert into picture (Pictures) values (?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setBinaryStream (1,new ByteArrayInputStream(baos.toByteArray()));
ps.execute();

// Select the image from the database.
sql = "select Pictures from picture where id = 1";
ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery(sql);
if (rs.next()) {
InputStream input = rs.getBinaryStream(1);
// Write the image to a file (for verification).
FileOutputStream fos = new FileOutputStream("screenshot.jpg");
byte[] buffer = new byte[1024];
while (input.read(buffer) > 0) {
fos.write(buffer);
}
input.close();
fos.close();
}
}

}

请注意,这需要连接到的默认架构中存在如下所示的表。

CREATE TABLE test.picture (
id int AUTO_INCREMENT ,
Pictures MEDIUMBLOB,
PRIMARY KEY (id)
);

关于java - 我可以将从netbeans截取的屏幕截图保存到Mysql吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62087428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com