Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JLabel.getIcon() to byte[]


Автор: SergikXP 7.4.2007, 08:19
Привет,
появилась задача...
Нужно вставить в базу (PostgreSQL - В поле Blob) изображение из метки на форме...
Если кто сталкивался, подскажите пожалуйста...
(я ещё только учусь smile)

описание:
На форме есть 2 кнопки, по нажатию 1й открываю диалог выбора файлов, в котором выбираю файл с изображением и загружаю его в JLabel.setIcon().
По нажатию кнопки Save, проверяю, если иконка есть то надо её вставить в базу...
нашёл только на примере из файла... А вот как перегнать в байт масив картинку не знаю :(

Автор: ShurikA 8.4.2007, 11:23
Цитата(SergikXP @  7.4.2007,  07:19 Найти цитируемый пост)
А вот как перегнать в байт масив картинку не знаю 

Чего то я не понял... ты хочешь загнать внутринности фаила картинки в БД?
Зачем?

Автор: SergikXP 8.4.2007, 14:27
Цитата(ShurikA @ 8.4.2007,  11:23)
Цитата(SergikXP @  7.4.2007,  07:19 Найти цитируемый пост)
А вот как перегнать в байт масив картинку не знаю 

Чего то я не понял... ты хочешь загнать внутринности фаила картинки в БД?
Зачем?

Нет, хочу открыть файл и изобразить его на форме...
А по нажатию на "сейв", перегнать картинку в байтмасссив и вставить его в поле БД...
При открытии формы я этот байт массив тяну из базы и строю картинку по нёму...

Автор: RebornCrusader 9.4.2007, 04:22
Не понимаю, в чём тут может быть проблема? Кодируй картинку в PNG/GIF/JPEG и сохраняй себе на здоровье. Пакет javax.imageio в помощь.

2ShurikA: А что тут такого, если картинка маленькая? А если нет доступа к файловой системе (провайдер так хочет), то БД - самое то. Я так делал для картинок порядка 10-50Kb, вполне прилично работает.

Автор: LSD 9.4.2007, 14:10
Код
Icon icon = label.getIcon();
BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
icon.paintIcon(label, image.getGraphics(), 0, 0);
ImageIO.write(image, "PNG", blob.setBinaryStream(0L));

Автор: ShurikA 9.4.2007, 22:17
Цитата(RebornCrusader @  9.4.2007,  03:22 Найти цитируемый пост)
А если нет доступа к файловой системе (провайдер так хочет), 

либо меняй провийдера, либо воспользуйся другим языком (на пример PHP) и принимай эти самые картинки или что угоднодругое для сохранениа на сервере, и пихай себе в базу только путь к фаилу.

Автор: RebornCrusader 11.4.2007, 04:34
А кто изначально будет закачивать эту картинку на сервер, если у нас нет прав? Способ хорош для своего сервера, в случае больших картинок и/или большого их числа.

Автор: ShurikA 11.4.2007, 13:59
Цитата(RebornCrusader @  11.4.2007,  03:34 Найти цитируемый пост)
А кто изначально будет закачивать эту картинку на сервер, если у нас нет прав?

Обычно у PHP на пример нет проблем с доступом к фаиловой системе (если конечно вообще есть доступ к серверу, в противном случае даже о БД и речи идти не может), эта проблемма как раз есть у Джавы. 
Соответственно, Джавой, у клиента, можно залить фаил на сервак (допустим постов в какой нибудь upload.php/.asp) и делай с ним потом чего хочешь.

Автор: LSD 11.4.2007, 14:33
Давайте прекратим обсуждение, того какие права далжны быть у приложения на сервере, топик не об этом.

Автор: SergikXP 11.4.2007, 14:56
Цитата(LSD @ 9.4.2007,  14:10)
Код
Icon icon = label.getIcon();
BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
icon.paintIcon(label, image.getGraphics(), 0, 0);
ImageIO.write(image, "PNG", blob.setBinaryStream(0L));




Спасибо...
Это пишем в запрос, а тянуть не подскажите как?
Чтоб построить картинку...
Вернее построить, по полученному блобу?

Автор: LSD 11.4.2007, 15:36
Аналогично:
Код
BufferedImage image = ImageIO.read(blob.getBinaryStream());

Автор: SergikXP 11.4.2007, 19:44
Цитата(LSD @ 11.4.2007,  15:36)
Аналогично:
Код
BufferedImage image = ImageIO.read(blob.getBinaryStream());

Спасибо...

Автор: LSD 11.4.2007, 22:00
Не забывай помечать вопрос как решенный.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)