使用jiconel上的imageicon自动调整图像

时间:2014-11-23 13:08:06

标签: java swing imageicon

我需要将图像放在jlabel上,我的图像存储在MySql表中,然后使用以下代码获取这些图像 -

byte[] imagedata=rs.getBytes(6); // rs is ResultSet of table
format=new ImageIcon(imagedata);
jLabel15.setIcon(format);

如何调整我想在jLabel15上显示的“格式”。

已编辑:表格中的图片列为bigblob数据类型

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式缩放图片,

    Image img = format.getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH);
    jLabel15.setIcon(new ImageIcon(img));

我已将图像缩放到50X50,您可以将其缩放到所需的大小

答案 1 :(得分:1)

我认为一种方法是覆盖ImageIcon的paintIcon(...)方法,如果图标本身已调整大小,则调整图像大小。

答案 2 :(得分:1)

以下是如何在调整组件大小时调整图像大小的示例。

import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class ResizedLabelTest {

    public static void main(String[] args) throws Exception {
        JFrame frm = new JFrame("ResizedLabel test");
        URL url = new URL("http://i.stack.imgur.com/37IMZ.jpg?s=128&g=1");
        final ImageIcon icon = new ImageIcon(url);
        JLabel label = new JLabel(icon);
        label.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                JLabel label = (JLabel) e.getComponent();
                Dimension size = label.getSize();
                Image resized = icon.getImage().getScaledInstance(size.width, size.height, Image.SCALE_SMOOTH);
                label.setIcon(new ImageIcon(resized));
            }
        });
        frm.add(label);
        frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frm.pack();
        frm.setVisible(true);
    }
}