|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Gagapsha : 112 Новичок
|
Фев 09, 2012 15:48 |
|
|
Подскажите как перевести изображение в массив байт без смены формата
Если я сделаю для своего jlabel иконку как
все нормально, но если я выполню код:
| Код: |
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. Я НЕ решаю задачи ЗА других! |
|
|
|
 |
|
|
|