Redimensionamento de Imagens (BufferedImage)

3 respostas
J

Boa noite pessoal,

Estou com uma dúvida e acredito que o mais difícil ja encontrei pesquisando por aqui, só que no meu caso é um pouco diferente:

Tenho uma imagem em bytes em meu código, preciso redimensiona-la (diminuir tamanho e kb) transformar em bytes de novo em seguida apresenta-la em uma JSP:

Todos os exemplos que eu vejo, as pessoas fazem upload da imagem redimensionam e depois gravam em disco, que não é oq quero neste momento.

A unica coisa mais próxima que encontrei perto doq preciso é isto aqui:

BufferedImage imageBuffer = new BufferedImage(largura, altura, BufferedImage.TYPE_INT_RGB);     
Graphics2D graphics2D = imageBuffer.createGraphics();     
// redimensiona antes de setar o graphics, com o algoritmo de cálculo de média da área em pixels da imagem...     
Image scaledImage = imagem.getScaledInstance(largura, altura, Image.SCALE_AREA_AVERAGING);     
graphics2D.drawImage(scaledImage, 0, 0, largura, altura, null);     
graphics2D.dispose();

Só que neste caso como eu carrego os meus bytes nesse imageBuffer?

Ao fazer este redimensionamento como faço pra transformar a imagem em bytes?

Obrigado e caso eu consiga alguma coisa também posto aqui!!!

3 Respostas

black_fire

Deve ser alguma coisa mais ou menos assim...

Abraço.

public static byte[] createDisabledIcon(byte[] byteImg, int width, int height) {
		
		// Criando instância da imagem
		Image img = new ImageIcon(byteImg).getImage();

		// Iniciando processo re 
		BufferedImage icon = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2D = icon.createGraphics();
		g2D.drawImage(img, 0, 0, null);
		g2D.dispose();
		
		try {
			// Convertendo imagem gerada para bytes
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			ImageIO.write(icon, "jpeg", out);
			out.flush();
			
			// Conversão finalizada
			return out.toByteArray();
		}
		catch (RuntimeException e) {
			throw e;
		}
		catch (Exception e) {
			throw new RuntimeException("Falha o converter imagem para bytes", e);
		}
	}
J

Cara achei bem legal oq vc passou, mais acredita uma coisa? la no meu serviço ele nao reconheceu a classe ImageIO?? nao sei porq, talvez seja pq o java de lá esta desatualizado, o pior q quem derá se fosse só atualizar rs,

Então, sabe me dizer uma outra forma pra converter essa imagem igual o código acima mais sem esse ImageIO?? existe outra forma será?

Obrigado e abraços :wink:

ViniGodoy

Oi, por favor, não duplique tópicos.

Isso força você mesmo a acomapanhar 2 tópicos com o mesmo assunto, e faz muita gente perder tempo respondendo um tópico depois de outro já ter sido solucionado.

Vou manter esse outro tópico seu, pois já tem mais respostas:
http://www.guj.com.br/posts/list/135068.java

E trancar esse aqui. Quem quiser, acompanha o assunto por lá.

Criado 16 de agosto de 2009
Ultima resposta 19 de ago. de 2009
Respostas 3
Participantes 3