Redimensionamento com qualidade ruim

Pessoal,

fiz uma classe para manipulação de imagens, só que na hora de redimensionar ela a imagem naum fica mto boa… por exemplo, envio umas fotos com fundo branco e quero deixar ela em miniatura, aí a foto fica toda pixelada… eh como se ela naum tivesse o efeito anti-alias…

vou mandar o código e alguém ve se consegue me ajudar…

public void redimensiona(int wMax, int hMax) throws IOException {
	try {
		BufferedImage bufferedImageSource = null;
		BufferedImage bufferedImageDest = null;
		Image imageSource = null;

		File fileSource = new File(source);
		imageSource = ImageIO.read(fileSource);
		bufferedImageSource = (BufferedImage) imageSource;
		int wOrig = bufferedImageSource.getWidth();
		int hOrig = bufferedImageSource.getHeight();
		
		double dimensao = calculaDimensao(wMax,hMax,wOrig,hOrig);
		
		int width = (int)(wOrig*dimensao);
		int height = (int)(hOrig*dimensao);
		
		bufferedImageDest = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D graphics2D = bufferedImageDest.createGraphics();
		graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
		graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
		//graphics2D.setStroke();
		graphics2D.drawImage(imageSource, 0, 0, width, height, null);
		
		BufferedOutputStream out;
		
		out = new BufferedOutputStream(new FileOutputStream(destino));
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufferedImageDest);
		param.setQuality(1.0f, false);
		encoder.setJPEGEncodeParam(param);
		encoder.encode(bufferedImageDest);
		out.close();

	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (ImageFormatException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

Valeu!

Eu uso essa rotina pra gerar thumbnails e não tenho esse problema:

	public static void createThumbnail(String sourcePath, String targetPath, int maxWidth, int maxHeight) throws ImageFormatException, IOException {
	    File input = new File(sourcePath);
	    File output = new File(targetPath);

	    BufferedImage source = ImageIO.read(input);

		double thumbRatio = (double)maxWidth / (double)maxHeight;
		
		int imageWidth = source.getWidth(null);
	    int imageHeight = source.getHeight(null);
	    
	    double imageRatio = (double)imageWidth / (double)imageHeight;
	    
	    if (thumbRatio < imageRatio) {
	    	maxHeight = (int)(maxWidth / imageRatio);
		} else {
			maxWidth = (int)(maxHeight * imageRatio);
		}
	    
	    BufferedImage image = new BufferedImage(maxWidth, maxHeight, BufferedImage.TYPE_INT_RGB);
        image.createGraphics().drawImage(source, 0, 0, maxWidth, maxHeight, null);
        
        String name = output.getName();
        String format = name.substring(name.lastIndexOf('.')+1).toLowerCase();
        ImageIO.write(image, format, output);
}

[]'s

Rodrigo C. A.

Usei seu código e continuei com o mesmo problema…
tente redimensionar uma imagem de 800x600 para 80x60 por exemplo, depois redimensione por um programa, vc vai ver a diferença… mas tente fazer isto com uma foto com fundo branco, que é meu caso em todas imagens