package puzzle.puzzleClasses; import java.awt.BasicStroke; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import jv.objectGui.PsImage; class Cria_BuffImgs{ static int W; static int H; double w; double h; Graphics2D g2; ImageIcon IIcon; static BufferedImage bi; static BufferedImage[][] bis; /**transforma uma Image em BufferedImage */ public static BufferedImage ImgToBuff(Image I, ImageObserver IObs){ BufferedImage Result=null; Graphics2D g2; try{ Result= new BufferedImage(I.getWidth(IObs),I.getHeight(IObs),BufferedImage.TYPE_INT_RGB); g2 = Result.createGraphics(); g2.drawImage(I,0,0,IObs); }catch(IllegalArgumentException e){} return Result; } /**Cria uma ImageIcon com as dimensões pretendidas: W e H.*/ public static ImageIcon cropIcon(String caminhoImg,int W,int H){ BufferedImage image = ImgToBuff((new PsImage(caminhoImg)).getImage(),null); double fEW = W/((double)image.getWidth()), fEH = ((double)H/image.getHeight());//factorEscala BufferedImage Result= new BufferedImage(W,H,BufferedImage.TYPE_INT_RGB); AffineTransform trans = new AffineTransform(); trans.scale(fEW,fEH); Graphics2D g2; g2 = Result.createGraphics(); g2.fillRect(0, 0, (int)(W), (int)(H)); g2.drawImage(image,trans, null); ImageIcon img = new ImageIcon(); img.setImage(Result); return img; } /**Cria uma ImageIcon com as dimensões pretendidas: W e H.*/ public static BufferedImage cropIconB(ImageIcon icon,int W,int H){ BufferedImage image = ImgToBuff(icon.getImage(),null); double fEW = W/((double)image.getWidth()), fEH = ((double)H/image.getHeight());//factorEscala BufferedImage Result= new BufferedImage(W,H,BufferedImage.TYPE_INT_RGB); AffineTransform trans = new AffineTransform(); trans.scale(fEW,fEH); Graphics2D g2; g2 = Result.createGraphics(); g2.fillRect(0, 0, (int)(W), (int)(H)); g2.drawImage(image,trans, null); return Result; } public Cria_BuffImgs(String path, int M, int N){ try{ IIcon=new ImageIcon(path); bi= Util.ImgToBuff(IIcon.getImage(),IIcon.getImageObserver()); if((IIcon.getImage()).getWidth(null)>(Dados.MaxW)||(IIcon.getImage()).getHeight(null)>(Dados.MaxH)){ //bi=bi.getSubimage(0,0,(Dados.MaxW-6), (Dados.MaxH-50)); //bi = cropIconB(IIcon,(Dados.MaxW-6),(Dados.MaxH-50)); }else { bi= Util.ImgToBuff(IIcon.getImage(), IIcon.getImageObserver()); } bis=Divide_Img(bi, M, N); }catch(Exception e){System.out.println("Insira uma imagem que no máximo tenha o tamanho de "+(Dados.MaxW-6)+"x"+(Dados.MaxH-50));} } public Cria_BuffImgs(Class c, String path, int M, int N ) { IIcon = Util.createAppletImageIcon(c, path, ""); bi= Util.ImgToBuff(IIcon.getImage(), IIcon.getImageObserver()); if(bi.getWidth()>(Dados.MaxW-6)||bi.getHeight()>(Dados.MaxH-50)){ bi=bi.getSubimage(0,0,(Dados.MaxW-6), (Dados.MaxH-50)); } bis=Divide_Img(bi, M, N); } public Cria_BuffImgs(int Num_ou_Pontos,int M, int N, int[] dim) { bi=Cria_BuffImgs.Cria_Buff_Img(Num_ou_Pontos, M, N, dim); bis=Divide_Img(bi, M, N); } /**Método que parte a imagem aos bocados*/ public static BufferedImage[][] Divide_Img(BufferedImage bi, int M, int N){ BufferedImage[][] Result = new BufferedImage[M*N][2]; W=bi.getWidth(); H=bi.getHeight(); int Conta=1; Result[0]=null; for(int i=0;i