package com.up.util; import java.awt.Image; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; /** * 图片工具类 */ public final class ImageUtils { /** * 图片缩放 * @param org 原图路径 * @param dest 缩放图路径 * @param height 高度 * @param width 宽度 */ public static boolean resize(String org,String dest, int height, int width) { boolean bol = false; //是否进行了压缩 //LogRecord.recode(ImageUtils.class, "resize", org); String pictype=""; if(!"".equals(org)&&org!=null){ pictype = org.substring(org.lastIndexOf(".")+1,org.length()); } //LogRecord.recode(ImageUtils.class, "height:",""+height); // LogRecord.recode(ImageUtils.class, "width:",""+width); double ratio = 0; //缩放比例 File o = new File(org); File d = new File(dest); BufferedImage bi; try { bi = ImageIO.read(o); Image itemp = bi.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH); int itempWidth = bi.getWidth(); int itempHeight = bi.getHeight(); //LogRecord.recode(ImageUtils.class, "itempHeight:",""+itempHeight); // LogRecord.recode(ImageUtils.class, "itempWidth:",""+itempWidth); //计算比例 if ((itempHeight > height) || (itempWidth > width)) { //LogRecord.recode(ImageUtils.class, "【开始图片缩放】-----pictype:", pictype); ratio = Math.min((new Integer(height)).doubleValue() / itempHeight, (new Integer(width)).doubleValue() / itempWidth); AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null); itemp = op.filter(bi, null); ImageIO.write((BufferedImage) itemp,pictype, d); bol = true; } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return bol; } public static void resizeWidth(String org,String dest, int height, int width) { //LogRecord.recode(ImageUtils.class, "resizeWidth", org); String pictype=""; if(!"".equals(org)&&org!=null){ pictype = org.substring(org.lastIndexOf(".")+1,org.length()); } double ratio = 0; //缩放比例 File o = new File(org); File d = new File(dest); BufferedImage bi; try { bi = ImageIO.read(o); Image itemp = bi.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH); int itempWidth = bi.getWidth(); // LogRecord.recode(ImageUtils.class, "itempWidth:",""+itempWidth); //计算比例 if (itempWidth != width) { //LogRecord.recode(ImageUtils.class, "【开始图片缩放 width】-----pictype:", pictype); ratio = ((new Integer(width)).doubleValue() / itempWidth); AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null); itemp = op.filter(bi, null); ImageIO.write((BufferedImage) itemp,pictype, d); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public static void copyFile(String sourcePath, String targetPath){ BufferedInputStream inBuff=null; BufferedOutputStream outBuff=null; try { File sourceFile = new File(sourcePath); File targetFile = new File(targetPath); if(!targetFile.exists()){ targetFile.getParentFile().mkdirs(); } // 新建文件输入流并对它进行缓冲 inBuff=new BufferedInputStream(new FileInputStream(sourceFile)); // 新建文件输出流并对它进行缓冲 outBuff=new BufferedOutputStream(new FileOutputStream(targetFile)); // 缓冲数组 byte[] b=new byte[1024 * 5]; int len; while((len=inBuff.read(b)) != -1) { outBuff.write(b, 0, len); } // 刷新此缓冲的输出流 outBuff.flush(); } catch(IOException e){ //LogRecord.recode(ImageUtils.class, "图片复制异常:", e.getMessage()); } finally { // 关闭流 try { if(inBuff != null) inBuff.close(); if(outBuff != null) outBuff.close(); } catch (IOException e) { //LogRecord.recode(ImageUtils.class, "文件流关闭异常:", e.getMessage()); } } } public static void main(String[] args) throws IOException{ //pressImage("D:\\images\\444.jpg", "D:\\images\\wmlogo.gif", 100, 50, 0.5f); // pressText("D:\\\\images\\\\444.jpg", "旺仔之印", "宋体", Font.BOLD|Font.ITALIC, 20, Color.red, 50, 50,.8f); //resizeWidth("c:\\test\\VIP3.png","c:\\test\\VIP3_1.png", 90, 245); //resize("E:\\testdata\\1.jpg","E:\\testdata\\2.jpg", 200, 200); //String targetPath = "111.jpg".substring(0,"111.jpg".indexOf(".jpg")); //System.out.println(targetPath); } }