Java中图像的数据类型是什么?

3
以下代码用于获取和设置字符串的属性,例如定义图像的数据类型是什么,profile_picture是图像的变量。我将把这个图像存储在数据库中。
private Long id;
public String first_name() {
    return first_name;
}

public void setfirst_name(String first_name) {
    this.first_name =first_name;

1
可能是在Java中管理二进制数据的最佳类型是什么?的重复问题。 - Chetan Kinger
@bot 我不这么认为... - nom
如果您使用的话,可以使用byte[]将图像以blob形式存储在数据库中。 - virendrao
@NabeelOmer 不要忘记将结果存储到数据库中。 - Chetan Kinger
@bot 抱歉,刚刚意识到... - nom
在数据库中,bytea是用于图像的数据类型。但是在Java中定义时,我不知道该使用什么数据类型。 - Srini Vasan
4个回答

6
如果您在Java中没有进行图像处理,您可以将字节存储为byte[]或在数据库级别上(SQL BLOB,二进制大对象)使用SerialBlob(实现Blob接口)。将图像作为仅具有路径的文件保存在数据库中也有其优点。在混合方法中,您可以使用输入/输出流将文件读取/写入到blob数据库列中,这样可以节省内存。

4

您可以使用以下两种方法之一来表示2D图像:

  1. BufferedImage
  2. Image

编辑:如果要将图像保存在数据库中,您可以使用以下代码片段将BufferredImage转换为byte[](然后将其保存为BLOB):

try{

    BufferedImage originalImage = 
                              ImageIO.read(new File("path/to/image/imag.jpg"));

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write( originalImage, "jpg", baos );
    baos.flush();
    byte[] imageInByte = baos.toByteArray();

    //save imageInByte as blob in database
    }catch(IOException e){
        System.out.println(e.getMessage());
    }finally{
       baos.close();
       //close database connection
    }

1
BufferedImage是Image的直接子类。 - S.L. Barth

4
URL iconURL = new URL("");
// iconURL is null when not found
ImageIcon icon = new ImageIcon(iconURL);
Image i = icon.getImage();

Image i; 是存储图像的变量,您可以从那里使用它。

祝福。

编辑:我建议不要在数据库中保存整个图像,只需保存图像的路径...


1
你会如何将这个存储在数据库中? - Chetan Kinger
@bot 这个问题是“Java中图像的数据类型是什么”,我在我的回答中表明这是一种数据类型。 - nom
我将把图像存储在数据库中。 - Chetan Kinger
@bot 这也是正确的,但在Java中最基本的图像数据类型是“Image”。我建议这个人不要将整个图像保存在数据库中,而只是该图像的路径... - nom

1
        File f = new File("D:/New Doc_1.jpg");
        int length = (int)f.length(); 
        FileInputStream fis = new FileInputStream(f);
        pstmt.setBinaryStream(3, fis,length);
        int i = pstmt.executeUpdate();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接