RescaleOp.filter crash

3 respostas
Evy
Oi pessoal. Estou desenvolvendo um programa que trabalha com edicao de imagens. Tenho um metodo que edita o brilho da imagem:
public void brighten()
	{
		float a = 1.5f;
		float b = -20.0f;			
		RescaleOp op = new RescaleOp(a,b,null);
		filter(op);		

	}


	private void filter(BufferedImageOp op)//Metodo que faz o filtro e joga a imagem no panel
	{
		JScrollPane sp=(JScrollPane)images.getSelectedComponent();

		if(sp!=null){
			ImagePanel ip=(ImagePanel)sp.getViewport().getView();
			sp=new JScrollPane();
			BufferedImage filteredImage
			= new BufferedImage(imagem.getWidth(), imagem.getHeight(), imagem.getType());
			op.filter(imagem, filteredImage);
			imagem = filteredImage;
			Graphics2D g2d = filteredImage.createGraphics();     
			g2d.drawImage(filteredImage, 0, 0, null);
			g2d.dispose(); 

			ip.setImage(filteredImage);
		}
	}
Quando esse método é executado, o programa fecha e ocorre um erro que fica em um log:

#An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d0ad5ad, pid=4152, tid=3760
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode, sharing)
# Problematic frame:
# C [awt.dll+0xad5ad]
#
# An error report file with more information is saved as hs_err_pid4152.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#

Alguem poderia me ajudar??

3 Respostas

Mauricio_Linhares

Assim, isso é um bug da própria JVM, não tem muito o que fazer quanto a isso não além de você reportar o bug no link que eles passaram ou atualizar pra uma versão mais recente da JVM.

Outra coisa a se fazer é utilizar outra biblioteca pra mexer com imagens, o o ImageMagick -> http://www.yeo.id.au/jmagick/

Evy

Ok,vou tentar instalar esse programinha ai…
Obrigada

Evy
Só não entendi pq deu esse erro agora, pois antes de aplicar no meu programa principal, testei o código do brilho e funcionou. Também, os metodos do blur e sharpen funcionam normais, só o brilho q gera o erro. Para os codigos do sharpen e do blur tem um metodo convolve:
private void convolve(float[] elements)
	{
		Kernel kernel = new Kernel(3,3,elements);
		ConvolveOp op = new ConvolveOp(kernel);
		filter(op);
	}
Código do blur:
public void blur()
	{
		float weight = 1.0f/9.0f;
		float[] elements = new float[9];
		for (int i = 0; i<9; i++)
			elements[i] = weight;
		convolve(elements);
		
	}
Código do sharpen:
public void sharpen()
	{
		float[] elements=
		{0.0f,-1.0f,0.0f,
				-1.0f, 5.f, -1.0f,
				0.0f,-1.0f,0.0f
		};
		convolve(elements);
	}

E todos passam pelo metodo filter ja citado acima.
Tem uma explicação isso?

Criado 8 de fevereiro de 2008
Ultima resposta 8 de fev. de 2008
Respostas 3
Participantes 2