E ai galera do guj blz ?
estou com problemas para redimensionar a imagem em JAI … help ae
package janela;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import com.sun.media.jai.widget.DisplayJAI;
public class PanelImagem {
JScrollPane spane = new JScrollPane();
private JLabel limagem = new JLabel();
private PlanarImage principal;
private DisplayJAI dj;
ImageIcon icon;
BufferedImage b;
public PanelImagem(String img) {
principal = JAI.create("fileload", img);
dj = new DisplayJAI(principal);
dj.setPreferredSize(new Dimension(660, 660));
limagem.add(dj);
icon = new ImageIcon(img);
icon = ajustaTam(icon);
}
public ImageIcon getLayout() {
return icon;
}
public DisplayJAI setImagem(String img) {
PlanarImage aux = JAI.create("fileload", img);
b = aux.getAsBufferedImage();
icon = new ImageIcon(img);
icon = ajustaTam(icon);
principal = aux;
aux.dispose();
dj.setPreferredSize(new Dimension(800, 800));
dj.set(principal);
dj.getHeight();
return dj;
}
public ImageIcon ajustaTam(ImageIcon imagem) {
ImageIcon novaImagem = null;
int flag=0;
if(imagem.getIconHeight() < imagem.getIconWidth()){
flag = 1;
//System.out.println("maior largura");
}
else
if(imagem.getIconHeight() >= imagem.getIconWidth()){
flag = 2;
//System.out.println("maior altura");
}
switch(flag) {
case 0:
novaImagem = new ImageIcon(imagem.getImage()); // imagem com tamanho original
break;
case 1:
if(imagem.getIconWidth() > 660)
{
//float u = (float) 1.23;
//System.out.println("valor"+u);
System.out.println("maior altura");
float y = (float) imagem.getIconWidth()/660;
System.out.println(y+"="+imagem.getIconWidth()+"/ 660");
float x = (float) imagem.getIconHeight()/y;
System.out.println(x+"="+imagem.getIconHeight()+"/"+y);
System.out.println("\n resultado:"+y+"tamanho x 660"+",y"+x);
novaImagem = new ImageIcon(
imagem.getImage().getScaledInstance(660,(int) x,Image.SCALE_DEFAULT)
); // imagem com o novo tamanho
}
else
novaImagem = new ImageIcon(imagem.getImage());// imagem com tamanho original
break;
case 2:
if(imagem.getIconHeight() > 660)
{
System.out.println("maior altura");
float y = (float) imagem.getIconHeight()/660;
System.out.println(y+"="+imagem.getIconHeight()+"/ 660");
float x =(float) imagem.getIconWidth()/y;
System.out.println(x+"="+imagem.getIconWidth()+"/"+y);
System.out.println("\n resultado:"+y+"tamanho x"+x+",y 660");
novaImagem=new ImageIcon(
imagem.getImage().getScaledInstance((int) x,660,Image.SCALE_DEFAULT)
); // imagem com o novo tamanho
}
else
novaImagem = new ImageIcon(imagem.getImage());// imagem com tamanho original
break;
}
return novaImagem;
}
}