如何从JLabel图标中获取ByteArray?

时间:2015-04-16 15:23:07

标签: java database bytearray jlabel imageicon

我正在尝试从ByteArray的图标中获取JLabel,然后将其存储到我的数据库中。
原因是因为当我在JLabel中打开图像时,它会被调整为300x300像素,所以我想将调整后的图片保存到我的数据库,以保持我的数据库轻量级。
我想“即时”执行此操作,而无需将已调整大小的图片保存在磁盘上。

将文件从磁盘转换为ByteArray并将这些ByteArrays存储在SQLite数据库中没有问题。
但是从ByteArray的图标中获取JLabel对我来说是不可能完成的任务 我不知道它是否可能。

帮助我,伙计们。
有没有办法做到这一点?

1 个答案:

答案 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);