Erro de Utilização de BufferedImage

1 resposta
julianecarlaf

Bom tenho que fazer um "miniPhotoshop" para um trabalho na faculdade está tudo executando e gerando outras imagens
o trabalho contém contraste,brilho,histograma,or,and,soma de duas imagens ...
O problema é que quando ele executa mais de uma operação ao invés de utilizar o o buffer inicial ele utiliza o que foi modificado..
contudo não encontrei onde isso esta acontecendo.

public class MinhaImagem {

	private BufferedImage bufferImagem; // buffer da imagem de entrada
	private ImageIcon imageIcon;
	private Image imagem;
	private int width;
	private int height;

	private BufferedImage imagemGerada; // buffer da imagem de saída
	private BufferedImage imagemcinza;
	private BufferedImage imagemBrilho;
	private BufferedImage imagemContraste;
	private BufferedImage imagemNegativo;
	private BufferedImage imagemAdicao;
	private BufferedImage imagemSubtracao;

	private JFreeChart histograma; // histograma
	private int[][] frequencia = new int[256][3]; // vetor de 256

	/*metodos set /get */
/**
	 * Método de conversão da imagem colorida no padrão RGB (JPEG e GIF) para
	 * escala de cinza: L = 0.299*R + 0.587*G + 0.114*B -> cálculo da luminância
	 */
	public void conversaoRGBEscalaCinza() {

		BufferedImage escalaCinza = getBufferImagem(); // buffer para dados da imagem
		int red, green, blue; // armazenar os valores do padrão RGB
		int luminancia; // armazenar o cálculo da luminância
		int altura = getHeight();
		int largura = getWidth();

		// faz a conversão
		for (int c = 0; c < (altura); c++) {    //(altura)
			for (int l = 0; l < (largura); l++) { //(largura)
				Color cor = new Color(escalaCinza.getRGB(l, c));
				red = cor.getRed();
				green = cor.getGreen();
				blue = cor.getBlue();

				// cálculo da luminância L
				luminancia = (int) ((0.299 * red) + (0.587 * green) + (0.114 * blue));

				Color cinza = new Color(luminancia, luminancia, luminancia);
				escalaCinza.setRGB(l, c, cinza.getRGB());
			}
		}
		this.imagemcinza = escalaCinza;
	}

bom esse é apenas uma função
já na interface principal ele guarda guarda a imagem

private void botaoCinzaActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        
        imagem.conversaoRGBEscalaCinza();
				caminho = caminho.concat("escalaCinza.jpg");

				InterfaceImagem ie = new InterfaceImagem(new ImageIcon
						(imagem.getImagemcinza()));
                           
    }

porém ele sempre utiliza o buffer da ultima imagem gerada.
Alguém poderia me ajudar :?:

1 Resposta

E
this.imagemcinza = escalaCinza;

não copia a imagem, apenas cria uma nova referência. Você precisa criar novos BufferedImage().

Criado 18 de agosto de 2011
Ultima resposta 18 de ago. de 2011
Respostas 1
Participantes 2