gpt4 book ai didi

java - 如何将字符串形式的图像(从android捕获并使用arraylist传递)转换为blob并将其保存在mysql数据库中

转载 作者:行者123 更新时间:2023-11-29 23:00:19 30 4
gpt4 key购买 nike

我已经从android捕获图像并使用字符串形式的arraylist将其传递到数据库端。现在的问题是如何将此字符串转换为 BLOB 并使用 servlet 将其保存在数据库中。

谢谢大家的帮助

这是安卓代码: 新线程(新可运行(){

                @Override
public void run() {
// TODO Auto-generated method stub

ArrayList<NameValuePair> postparameters=new ArrayList<NameValuePair>();
postparameters.add(new BasicNameValuePair("profile",image.toString()));

String response=null;
try{
response=RegisterHttpReq.executeHttpPost("http://10.0.2.2:8080/epass_admin/storeImage", postparameters);
String res = response.toString();
System.out.println(res);
String resp = res.replaceAll("\\s+", "");
}catch(Exception e){}
}
}).start();

try{
Toast.makeText(getApplicationContext(), "Image uploaded successfully", Toast.LENGTH_LONG).show();

Intent in=new Intent(getApplicationContext(),Imageset.class);
image=imv.getDrawingCache();

Bundle extras = new Bundle();
extras.putParcelable("imagebitmap", image);
in.putExtras(extras);
startActivity(in);
}catch(Exception e){}
}
});

最佳答案

根据维基百科,“二进制大型对象 (BLOB) 是作为单个实体存储在数据库管理系统中的二进制数据的集合。Blob 通常是图像、音频或其他多媒体对象”。这并不排除在 BLOB 字段中存储纯文本的可能性。也就是说,我不确定 toString() 是否会将您的图像转换为字符串。您应该将图像转换为 Base64,然后再从 Base64 返回为二进制。请参阅Java - Convert image to Base64 。取回二进制数据后,您可以将其插入数据库。您还可以存储经过 Base64 编码的图像,并仅在检索时对其进行解码。不过,这通常会消耗 30% 的额外空间。

插入图像 BLOB 数据的代码 ( http://www.java2s.com/Code/Java/Database-SQL-JDBC/InsertpicturetoMySQL.htm ):

/*

Defining the Table: Oracle and MySql

create table MyPictures (
id INT PRIMARY KEY,
name VARCHAR(0),
photo BLOB
);
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertPictureToMySql {
public static void main(String[] args) throws Exception, IOException, SQLException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/databaseName", "root", "root");
String INSERT_PICTURE = "insert into MyPictures(id, name, photo) values (?, ?, ?)";

FileInputStream fis = null;
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
File file = new File("myPhoto.png");
fis = new FileInputStream(file);
ps = conn.prepareStatement(INSERT_PICTURE);
ps.setString(1, "001");
ps.setString(2, "name");
ps.setBinaryStream(3, fis, (int) file.length());
ps.executeUpdate();
conn.commit();
} finally {
ps.close();
fis.close();
}
}
}

关于java - 如何将字符串形式的图像(从android捕获并使用arraylist传递)转换为blob并将其保存在mysql数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523855/

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