изменить размер imageIcon
Добавлено: 26 июн 2006, 16:55
есть Jlabel с ImageIcon. У ImageIcon есть метод getIconHeight, но нету ыetIconHeight.
Как задать размер ImageIcon-у.
Спасибо
Как задать размер ImageIcon-у.
Спасибо
Код: Выделить всё
URL imageURL = getClass().getResource("/test.jpg");
ImageIcon imageIcon = new ImageIcon(imageURL);
Image image = imageIcon.getImage();
ToolkitImage toolkitImage = (ToolkitImage)image;
BufferedImage bufferedImage = toolkitImage.getBufferedImage();
Код: Выделить всё
public static BufferedImage resizeImage(BufferedImage image, int width, int height) {
ColorModel cm = image.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(width, height);
boolean isRasterPremultiplied = cm.isAlphaPremultiplied();
BufferedImage target = new BufferedImage(cm, raster, isRasterPremultiplied, null);
Graphics2D g2 = target.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
double scalex = (double) target.getWidth()/ image.getWidth();
double scaley = (double) target.getHeight()/ image.getHeight();
AffineTransform xform = AffineTransform.getScaleInstance(scalex, scaley);
g2.drawRenderedImage(image, xform);
g2.dispose();
return target;
}
Код: Выделить всё
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import sun.awt.image.ToolkitImage;
public class ChangeIconSize {
public ChangeIconSize() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(null);
init(panel);
frame.add(panel);
frame.setSize(800, 600);
frame.setVisible(true);
}
private void init(JPanel panel) {
URL imageURL = getClass().getResource("/test.jpg");
ImageIcon imageIcon = new ImageIcon(imageURL);
JLabel l1 = new JLabel(imageIcon);
l1.setBounds(0, 0, 400, 300);
panel.add(l1);
Image image = imageIcon.getImage();
ToolkitImage toolkitImage = (ToolkitImage)image;
BufferedImage bufferedImage = toolkitImage.getBufferedImage();
BufferedImage resizedImage = resizeImage(bufferedImage, bufferedImage.getWidth()/2, bufferedImage.getHeight()/2);
ImageIcon imageIcon2 = new ImageIcon(resizedImage);
JLabel l2 = new JLabel(imageIcon2);
l2.setBounds(400, 0, 400, 300);
panel.add(l2);
}
public static BufferedImage resizeImage(BufferedImage image, int width, int height) {
ColorModel cm = image.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(width, height);
boolean isRasterPremultiplied = cm.isAlphaPremultiplied();
BufferedImage target = new BufferedImage(cm, raster, isRasterPremultiplied, null);
Graphics2D g2 = target.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
double scalex = (double) target.getWidth()/ image.getWidth();
double scaley = (double) target.getHeight()/ image.getHeight();
AffineTransform xform = AffineTransform.getScaleInstance(scalex, scaley);
g2.drawRenderedImage(image, xform);
g2.dispose();
return target;
}
public static void main(String[] args) {
new ChangeIconSize();
}
}