分享

java实现上传图片后的缩放处理

 真爱图书 2011-11-04

package com.test.image;

import java.awt.Color; 

 import java.awt.Graphics2D; 

 import java.awt.Image; 

 import java.awt.image.BufferedImage; 

 import java.awt.image.ConvolveOp; 

 import java.awt.image.Kernel; 

 import java.io.File; 

 import java.io.FileOutputStream; 

import java.io.InputStream; 


  

 import org.apache.commons.fileupload.FileItem; 
import org.apache.log4j.Logger;

 

  

 import com.sun.image.codec.jpeg.JPEGCodec; 

import com.sun.image.codec.jpeg.JPEGImageEncoder; 

   
 public class ImageUtil { 

     /** 

      * Logger for this class 

      */

     private static final Logger logger = Logger.getLogger(ImageUtil.class); 

   

     public void imageScale(String srcFilePath, String targetFilePath, 

            int width, int height) { 

         this.imageScale(new File(srcFilePath), new File(targetFilePath), width, 

                 height); 

     } 

   

     public void imageScale(File srcFile, File targetFile, int width, int height) { 

         try { 

             Image image = javax.imageio.ImageIO.read(srcFile); 

   

             image = image.getScaledInstance(width, height, 

                     Image.SCALE_AREA_AVERAGING); 

            // Make a BufferedImage from the Image. 

             BufferedImage mBufferedImage = new BufferedImage(width, height, 

                     BufferedImage.TYPE_INT_RGB); 

             Graphics2D g2 = mBufferedImage.createGraphics();             

   

             g2.drawImage(image, 0, 0, width, height, Color.white, null); 

             g2.dispose(); 

   

             float[] kernelData2 = { -0.125f, -0.125f, -0.125f, -0.125f, 2, 

                     -0.125f, -0.125f, -0.125f, -0.125f }; 

             Kernel kernel = new Kernel(3, 3, kernelData2); 

             ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); 

             mBufferedImage = cOp.filter(mBufferedImage, null); 

   

             File targetDir = targetFile.getParentFile(); 

             if (!targetDir.exists()) 

                 targetDir.mkdirs(); 

   

             FileOutputStream out = new FileOutputStream(targetFile); 

             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 

             encoder.encode(mBufferedImage); 

            out.close(); 

         } catch (Exception e) { 

            logger.error( 

                     "imageScale(String, String, int, int) - 图片压缩出错 - srcFilePath="

                             + srcFile.getPath() + ", targeFilePath="

                             + targetFile.getPath() + ", width=" + width 

                            + ", height=" + height, e); 

         } 
         

     } 

   

     public void imageScale(FileItem fileItem, String targetFilePath, int width, 

            int height) { 

         try { 

             InputStream input = fileItem.getInputStream(); 

             Image image = javax.imageio.ImageIO.read(input); 

   

             image = image.getScaledInstance(width, height, 

                     Image.SCALE_AREA_AVERAGING); 

             BufferedImage mBufferedImage = new BufferedImage(width, height, 

                     BufferedImage.TYPE_INT_RGB); 

             Graphics2D g2 = mBufferedImage.createGraphics(); 

   

             g2.drawImage(image, 0, 0, width, height, Color.white, null); 

             g2.dispose(); 

   

             float[] kernelData2 = { -0.125f, -0.125f, -0.125f, -0.125f, 2, 

                     -0.125f, -0.125f, -0.125f, -0.125f }; 

            Kernel kernel = new Kernel(3, 3, kernelData2); 

             ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); 

             mBufferedImage = cOp.filter(mBufferedImage, null); 

  

             File target = new File(targetFilePath); 

            File targetDir = target.getParentFile(); 

             if (!targetDir.exists()) 

                targetDir.mkdirs(); 

   

             FileOutputStream out = new FileOutputStream(targetFilePath); 

             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 

             encoder.encode(mBufferedImage); 

             out.close(); 

             input.close(); 

         } catch (Exception e) { 

             logger.error( 

                     "imageScale(String, String, int, int) - 图片压缩出错 - fileItem="

                             + fileItem.getName() + ", targetFilePath="

                             + targetFilePath + ", width=" + width + ", height="

                             + height, e); 

        } 
         

     } 

       

     public static void main(String[] args) { 

         ImageUtil iu=new ImageUtil(); 

         iu.imageScale("图片位置/t.jpg", "存放位置/**.jpg", width, height); 

     } 

 }

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约