2

.GIFJavaでサイズを変更したいアニメーション画像がありますが、従来の方法を使用しようとするとうまくいかないようです:

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));

私は.GIF唯一の場合を取得しResolution.MIDます(つまり、ファイルから直接ロードされた画像)。

4

1 に答える 1

1

imgscarと呼ばれる Java 用の単純な画像スケーリング ライブラリがあります。

このライブラリは、画像のスケーリングに対していくつかの異なるアプローチを実装しており、要求があれば最適なアプローチを選択するか、要求があれば最速または最高の外観を提供します。

使い方は非常にシンプルで、静的メソッドの束だけです。最も単純なユースケースは次のとおりです。

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

すべての操作は画像の元の比率を維持するため、この場合、幅 200 ピクセル、高さ 200 ピクセルの境界内で画像のサイズを変更するように imgscar に要求しています。デフォルトでは、最適で最速のアプローチが自動的に選択されます。指定されていませんでした。

于 2013-02-24T17:42:18.343 に答える