我正在尝试从ByteArray
的图标中获取JLabel
,然后将其存储到我的数据库中。
原因是因为当我在JLabel
中打开图像时,它会被调整为300x300像素,所以我想将调整后的图片保存到我的数据库,以保持我的数据库轻量级。
我想“即时”执行此操作,而无需将已调整大小的图片保存在磁盘上。
将文件从磁盘转换为ByteArray
并将这些ByteArrays
存储在SQLite数据库中没有问题。
但是从ByteArray
的图标中获取JLabel
对我来说是不可能完成的任务
我不知道它是否可能。
帮助我,伙计们。
有没有办法做到这一点?
答案 0 :(得分:0)
JLabel只是图像的占位符,您仍在使用图像对象。简单地将图像转换为字节数组不是更容易吗?
File f = new File("img.jpg");
BufferedImage image = ImageIO.read(fnew);
ByteArrayOutputStream b =new ByteArrayOutputStream();
ImageIO.write(image, "jpg", b );
byte[] imageInByte = b.toByteArray();
或者,如果您想从JLabel检索图像,可以使用:
Icon icon = label.getIcon();
BufferedImage image = new BufferedImage(icon.getIconWidth(),
icon.getIconHeight(),BufferedImage.TYPE_INT_RGB);