java jlabel图片大小_java – 图像调整大小并在JPanel或JLabel中显...

当然你可以调整图像的大小有很多不同的方法,比如Image#getScaledInstance(int width,int height,int hints),但是this has its perils.

主要问题是:

Image.getScaledInstance() does not return a finished, scaled image. It

leaves much of the scaling work for a later time when the image pixels

are used.

我不建议使用它,但here就是一个很好的例子.

或者,您可以使用此方法:

import javax.swing.ImageIcon;

import java.awt.image.BufferedImage;

import java.awt.Image;

import java.awt.Color;

import java.awt.Graphics2D;

import java.io.File;

import javax.imageio.ImageIO;

import java.awt.RenderingHints;

public class ImgUtils {

public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {

BufferedImage bi = null;

try {

ImageIcon ii = new ImageIcon(filename);//path to image

bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);

} catch (Exception e) {

e.printStackTrace();

return null;

}

return bi;

}

}

你会像以下一样使用它:

final BufferedImage img=new ImgUtils().scaleImage(200,200,"c:/test.jpg");

//create label with image as background

JLabel label=new JLabel(new ImageIcon((Image)img));

更新:

这是我做的一个小例子:

import java.awt.BorderLayout;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;

public class JavaApplication117 {

//change this to your own

static String filename="c:/test.jpg";

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

new JavaApplication117().createAndShowUI();

}

});

}

private void createAndShowUI() {

JFrame frame = new JFrame("Test");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

initComponents(frame);

frame.setResizable(false);

frame.pack();

frame.setVisible(true);

}

private void initComponents(JFrame frame) {

final BufferedImage img = new ImgUtils().scaleImage(200, 200, filename);

//create label with image as background

JLabel label = new JLabel(new ImageIcon((Image) img));

frame.getContentPane().add(label, BorderLayout.CENTER);

}

}

class ImgUtils {

public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {

BufferedImage bi = null;

try {

ImageIcon ii = new ImageIcon(filename);//path to image

bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);

} catch (Exception e) {

e.printStackTrace();

return null;

}

return bi;

}

}

参考文献:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值