Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Image || BufferedImage > byte[]
Список форумов
 ->  Работа с изображениями (Advanced Imaging API)


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
Gagapsha : 112
Новичок

СообщениеФев 09, 2012 15:48 
Ответить с цитатой
Подскажите как перевести изображение в массив байт без смены формата

Если я сделаю для своего jlabel иконку как

Код:

setIcon (thumbnail)


все нормально, но если я выполню код:

Код:


BufferedImage combined = new BufferedImage(x_MAX, y_MAX, BufferedImage.TYPE_INT_ARGB);
               Graphics g = combined.getGraphics();
               g.drawImage(thumbnail.getImage(), x_MAX, y_MAX, null);

               ByteArrayOutputStream bos = new ByteArrayOutputStream();

               ImageIO.write(combined, "png", bos);

               byte[] b1 = bos.toByteArray();
// Перевод в строку для сохранения в БД
               small = Base64.encode(b1);
// Как бы достали из БД и отображаем на Jlabel

label.setIcon(new ImageIcon(Base64.decode(small)));




Ничего не выйдет. Какие есть пути для преобразования BufferedImage в массив байт
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 10, 2012 12:42 
Ответить с цитатой
Код:
package ru.skipy.tests;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * IconRestoreTest
 *
 * @author Eugene Matyushkin aka Skipy
 * @since 10.02.12
 */
public class IconRestoreTest extends JFrame {

    JLabel src;
    JLabel dst;

    public IconRestoreTest() {
        super("Icon restore test");
        src = new JLabel();
        src.setIcon(new ImageIcon("./moscows.png"));
        src.setBorder(BorderFactory.createLineBorder(Color.red));
        JPanel cp = new JPanel(new BorderLayout(5, 5));
        dst = new JLabel();
        dst.setBorder(BorderFactory.createLineBorder(Color.blue));
        JButton btn = new JButton("Copy");
        cp.add(src, BorderLayout.LINE_START);
        cp.add(dst, BorderLayout.LINE_END);
        cp.add(btn, BorderLayout.PAGE_END);
        setContentPane(cp);
        setSize(600, 500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                copyImage();
            }
        });
    }

    private void copyImage() {
        ImageIcon icon = (ImageIcon) src.getIcon();
        int w = icon.getIconWidth();
        int h = icon.getIconHeight();
        BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
        img.getGraphics().drawImage(icon.getImage(), 0, 0, this);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            ImageIO.write(img, "PNG", baos);
            baos.flush();
            baos.close();
            byte[] data = baos.toByteArray();
            dst.setIcon(new ImageIcon(ImageIO.read(new ByteArrayInputStream(data))));
        } catch (IOException ex) {
            ex.printStackTrace();
            return;
        }
        dst.repaint();
    }

    public static void main(String[] args) {
        new IconRestoreTest().setVisible(true);
    }
}


P.S. Имя картинки только замените на правильное
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Работа с изображениями (Advanced Imaging API)


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru