【问题标题】:Resize .GIF image调整 .GIF 图像的大小
【发布时间】:2013-02-09 20:33:26
【问题描述】:

我有一个动画 .GIF 图像,我想在 java 中调整大小,但是当尝试使用传统方法时,它似乎不起作用:

ImageIcon esclamativoMid = null;
//... search my file...
if(name.equalsIgnoreCase("esclamativo.gif"))
    esclamativoMid = new ImageIcon(f.getAbsolutePath());
myEnumMap.put(Resolution.MID, esclamativoMid);

for(Resolution r: Resolution.values()){
    if(r != Resolution.MID){
        int w = esclamativoMid.getIconWidth()*(r.ordinal()+1)/2;
        int h = esclamativoMid.getIconHeight()*(r.ordinal()+1)/2;
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = (Graphics2D)bi.createGraphics();
        g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
        g2d.drawImage(esclamativoMid.getImage(), 0, 0, w, h, null);
        myEnumMap.put(r, new ImageIcon(bi));
    }
}

当我尝试使用该代码显示图像时:

new JLabel(myEnumMap.get(currentRes));

只有当Resolution.MID(即直接从文件加载的图像)时,我才会得到.GIF

【问题讨论】:

    标签: java image draw gif image-resizing


    【解决方案1】:

    有一个简单的 Java 图像缩放库,名为 imgscalr

    该库实现了几种不同的图像缩放方法,如果您要求,它会为您选择最优化的方法,或者为您提供最快或最好看的方法(如果您要求的话)。

    用法非常简单,只是一堆静态方法。最简单的用例是:

    BufferedImage scaledImage = Scalr.resize(myImage, 200);
    

    所有操作都保持图像的原始比例,因此在这种情况下,您要求 imgscalr 在 200 像素宽和 200 像素高的范围内重新调整图像大小,默认情况下它会自动选择最好看和最快的方法因为没有指定。

    【讨论】:

    • 我试过了,看起来对其他图像很好,但是'.GIF'图像是固定的:(
    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 2015-06-16
    • 2018-06-16
    • 2011-09-28
    • 1970-01-01
    • 2018-06-21
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多