2015-04-16 2 views
-1

Я пытаюсь получить ByteArray из значка JLabel, а затем сохранить его в моей базе данных.
Причина в том, что, когда я открываю изображение в своем JLabel, он изменяется до 300x300 пикселей, поэтому я хочу сохранить это измененное изображение в моей базе данных, чтобы моя база данных была легкой.
Я хочу сделать это «на лету», не сохраняя изображение с уменьшенным размером на диске.Как получить ByteArray из значка JLabel?

У меня нет проблем с преобразованием файлов с диска в ByteArray и сохранением этих ByteArrays в базе данных SQLite.
Но получение ByteArray из значка JLabel является для меня невозможным.
Я не знаю, возможно ли это.

Так что помогите мне, ребята.
Есть ли способ сделать это?

ответ

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); 
+0

Я знаю, что, но я пытаюсь как-то взять эту икону из JLabel, включите его изображения и затем получите байты из этого изображения. Я знаю, что есть простой способ, чтобы прочитать его из файла. В любом случае, Tnx. : D – Zoka

+0

Вышеприведенный код делает именно это. Вы можете взять значок из JLabel и преобразовать его в BufferedImage. – Petrov

+0

Благословит вас Бог! Я пытаюсь найти это весь день! – Zoka