【问题标题】:How to convert ImageIcon to Image?如何将 ImageIcon 转换为 Image?
【发布时间】:2014-03-01 08:52:16
【问题描述】:

我已经从我的项目 src 文件中抓取了 imageicon,如下所示:

 icon = new ImageIcon(ViewDetailsV.class.getResource("/brandnew/images/male_avatar.jpg"));

然后我想放入这一行,以便调整到标签的大小:

lblPhotoField.setIcon(new ImageIcon(ScaledImage(icon, lblPhotoField.getWidth(), lblPhotoField.getHeight()));

但我需要“图标”为 image ,而不是 imageicon ,因为 ScaledImage 采用 Image 参数而不是 ImageIcon 的方法。

 private Image ScaledImage(Image img, int w, int h){
    BufferedImage resizedImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);

    Graphics2D g2 = resizedImage.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(img, 0,0,w,h,null);
    g2.dispose();
    return resizedImage;
}

是的,我确实尝试将返回值更改为 ImageIcon,但它给了我错误。所以我现在专注于如何将 ImageIcon 转换为 Image 以便我可以将它放在方法行中,获取图标并将我的标签设置为:

 lblPhotoField.setIcon(icon);

【问题讨论】:

    标签: java image swing imageicon


    【解决方案1】:

    使用ImageIcon#getImage 方法...

    ScaledImage(icon.getImage(), lblPhotoField.getWidth(), lblPhotoField.getHeight())
    

    除非您设置lblPhotoField 的大小,否则您就是自己(其中自己令人担忧)或者已经布置好了,否则我不会依赖getWidth()getHeight()

    【讨论】:

    • 哦..那你有什么建议? :D
    • 定义照片的“首选”尺寸并让布局管理器处理其余部分,除非您在标签更改时尝试缩放图像,否则那就是另一锅鱼了
    • 是的!如果标签发生变化,我正在尝试缩放图像:D 感谢您的帮助!再说一次,请帮助我的下一个问题? :D stackoverflow.com/questions/21570245/…
    • 创建一个只知道如何缩放和绘制图像的自定义组件可能更容易。以maintaining aspect ratio of JPanel background image 为例
    猜你喜欢
    • 2013-02-09
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2010-11-12
    相关资源
    最近更新 更多