Problema em redimencionar imagens gif com Graphics2D

por favor, alguem me dá uma luz!

[code]public ImageIcon resizeImage(Image im) {
int width=20, height=20;
BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TRANSLUCENT);
Graphics2D g = buffer.createGraphics();
g.drawImage(im , 0, 0, width, height, null);
ImageIcon icon = new ImageIcon(buffer);
g.dispose();
return icon;

} [/code]

a imagem que entra como parâmetro desse método é uma GIF. que o programa pega do servidor.
esse método retorna um imageicon que deveria ser usado no construtor de um JLabel. porém a imagem não aparece. e se eu mudar TRANSLUCENT por outra propriedade, a imagem aparece de cor preta. não intendo o que tá acontecendo.
fiz testes com outras imagens e deu tudo certo. usei outras imagens gif e mesmo assim continuou dando certo. só não dá certo com as gif que o programa pega do servidor. e mesmo com essas, deu certo a primeira vez, mas somente a primeira.
alguem me ajuda?

bom pessoal, resolvi o problema, porém tenho medo de que isso seja um gambiarra.
adicionei no inicio do método a seguinte linha:
ImageIcon icon = new ImageIcon(im);
aí a imagem começou a aparecer.
me parece a a Imagem só tem a url, mas não tem a imagem ainda. aí eu mandava o método pintar uma imagem que nao existia. agora a seguinte pergunta: isso é uma gambiarra? há uma forma mais bonita de se fazer isso?

public ImageIcon resizeImage(Image im) { ImageIcon icon = new ImageIcon(im); int width=20, height=20; BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TRANSLUCENT); Graphics2D g = buffer.createGraphics(); g.drawImage(im , 0, 0, width, height, null); icon = new ImageIcon(buffer); g.dispose(); return icon; }