`

ImageUtil(图片处理工具类,压缩,复制,附件等)

    博客分类:
  • java
 
阅读更多

 

内容含:图片处理工具类;以图片压缩为例 ,编写调用实例

 

第一步:框架中加入配置文件application.properties图片压缩后指定的高宽在此配置文件中配置

内容为:

 

Xml代码  收藏代码
  1. image.width=150  
  2. image.height=150  

 

 

第二步:框架中加入配置文件加载操作类,详情见:http://lucien-zzy.iteye.com/admin/blogs/2009495

 

第三步:编写图片处理工具类

 

Java代码  收藏代码
  1. /** 
  2.  * 图片处理工具 
  3.  * @author ziyuzhang 
  4.  * 
  5.  */  
  6. public class ImageUtil {  
  7.   
  8.     private static final int BUFFER_SIZE = 16 * 1024;  
  9.   
  10.       
  11.       
  12.     /** 
  13.      * 处理图片并保存  一张原图和一张缩小后的图片  小图可用于手机端 
  14.      * @param upload             大图对象 
  15.      * @param uploadFileName     图片原名 
  16.      * @param webPath            工程部署的绝对地址 
  17.      * @param filePath           图片目录 
  18.      * @return   为一字符数字,0位置 为原图片位置,1位置为压缩后图片位置,2位置为压缩后图片高度,3位置为压缩后图片宽度,4位置为压缩后图片大小 
  19.      */  
  20.     public static String[] uploadImages(File upload, String uploadFileName,String webPath,String filePath) {  
  21.   
  22.         StringTokenizer tokenizer = new StringTokenizer(uploadFileName, ".");  
  23.         String ext="";  
  24.         while(tokenizer.hasMoreTokens()){  
  25.             ext = tokenizer.nextToken();  
  26.         }  
  27.           
  28.         //大图的名字  
  29.         String filename = ImageUtil.getUUID()+"."+ext;  
  30.         //保存大图  
  31.          if(!ImageUtil.saveFile(upload,webPath,filePath,filename)){  
  32.              return null;  
  33.          }  
  34.               
  35.         String afterFileName = ImageUtil.getUUID();  
  36.         //小图的名字  
  37.         String smallname =   afterFileName + "." + ext;  
  38.         String smallPath = webPath + filePath + smallname;   
  39.         // 产生一张新的截图  
  40.         String[] fileinfo =  ImageUtil.resizeImage(upload, smallPath,ConfigUtil.getIntValue("image.width"),   
  41.                 ConfigUtil.getIntValue("image.height"),ext);  
  42.         if(null == fileinfo){  
  43.             return new String[]{"/" + filePath + filename,"/" + filePath + filename,  
  44.                      null,null,null};  
  45.         }else{  
  46.             return new String[]{"/" + filePath + filename,"/" + filePath + smallname,  
  47.                                  fileinfo[0],fileinfo[1],fileinfo[2]};  
  48.         }  
  49.           
  50.     }  
  51.       
  52.     /** 
  53.      * 对应图片key为 upload 
  54.      * 保存附件 限制大小100M 
  55.      * @param response 
  56.      * @param request 
  57.      * @return 
  58.      */  
  59.        public static String getfile(HttpServletResponse  response,HttpServletRequest  request) {  
  60.   
  61.               
  62.              SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
  63.              // 根据服务器的文件保存地址找到项目部署的绝对地址  
  64.              String webPath = ServletActionContext.getServletContext().getRealPath("/")  ;  
  65.              String filePath ="upload/"+sdf.format(new Date())+"/";   
  66.             //文件保存目录路径  
  67.             String savePath = webPath+ "upload/";  
  68.             //最大文件大小  
  69.             long maxSize = 1024*1024*100;  
  70.             response.setContentType("text/html; charset=UTF-8");  
  71.             if (!ServletFileUpload.isMultipartContent(request)) {     
  72.                 return "erro";  
  73.             }  
  74.             //如果目录不存在则创建  
  75.             if (!(new File(savePath).exists())) {             
  76.                 if (!(new File(savePath).mkdirs())) {  
  77.                     return "erro";  
  78.                 }  
  79.             }   
  80.           
  81.             //检查目录写权限  
  82.             if (!(new File(savePath)).canWrite()) {  
  83.                 return "erro";  
  84.             }     
  85.             MultiPartRequestWrapper   mul = (MultiPartRequestWrapper)request;  
  86.             File[] imageFiles = mul.getFiles("upload");  
  87.             String[] filesss = mul.getFileNames("upload");        
  88.             if (imageFiles != null && imageFiles.length >0) {  
  89.   
  90.                 String fileName = filesss[0];  
  91.                 long fileSize = imageFiles[0].length();       
  92.                     //检查文件大小  
  93.                     if (fileSize > maxSize) {  
  94.                         return "erro";  
  95.                     }  
  96.                     //检查扩展名  
  97.                     String fileExt = fileName.substring(  
  98.                             fileName.lastIndexOf(".") + 1).toLowerCase();  
  99.                   
  100.                     SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");  
  101.                     String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;                
  102.                     //保存图片到硬盘  
  103.                     ImageUtil.saveFile(imageFiles[0], webPath, filePath, newFileName);                                
  104.                       
  105.                     filePath = webPath + filePath+newFileName ;  
  106.             }         
  107.               
  108.             return filePath;  
  109.         }  
  110.       
  111.   
  112.       
  113.     /** 
  114.      * 将文件保存到制定位置,路径不存在自动创建 
  115.      *  
  116.      * @param file 
  117.      *            要保存的文件 
  118.      * @param webPath 
  119.      *            工程部署的绝对路径 
  120.      * @param filePath 
  121.      *            文件夹的相对路径 
  122.      * @param filename 
  123.      *            文件名 
  124.      * @return 
  125.      */  
  126.     public static boolean saveFile(File file, String webPath, String filePath,  
  127.             String filename) {  
  128.   
  129.         if (new File(webPath + filePath).exists()) {  
  130.             webPath = webPath + filePath + "/" + filename;  
  131.             File dstFile = new File(webPath);  
  132.             if (copy(file, dstFile)) {  
  133.                 return true;  
  134.             }  
  135.   
  136.         } else {  
  137.             if (new File(webPath + filePath).mkdirs()) {  
  138.                 webPath = webPath + filePath + "/" + filename;  
  139.                 File dstFile = new File(webPath);  
  140.                 if (copy(file, dstFile)) {  
  141.                     return true;  
  142.                 }  
  143.   
  144.             }  
  145.   
  146.         }  
  147.         return false;  
  148.   
  149.     }  
  150.   
  151.     /** 
  152.      * 把源文件对象复制成目标文件对象 
  153.      *  
  154.      * @param src 
  155.      *            源文件 
  156.      * @param dst 
  157.      *            目标文件 
  158.      * @return 
  159.      */  
  160.     public static boolean copy(File src, File dst) {  
  161.         boolean result = false;  
  162.         InputStream in = null;  
  163.         OutputStream out = null;  
  164.         try {  
  165.             in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);  
  166.             out = new BufferedOutputStream(new FileOutputStream(dst),  
  167.                     BUFFER_SIZE);  
  168.             byte[] buffer = new byte[BUFFER_SIZE];  
  169.             int len = 0;  
  170.             while ((len = in.read(buffer)) > 0) {  
  171.                 out.write(buffer, 0, len);  
  172.             }  
  173.             result = true;  
  174.         } catch (Exception e) {  
  175.             e.printStackTrace();  
  176.             result = false;  
  177.         } finally {  
  178.             if (null != in) {  
  179.                 try {  
  180.                     in.close();  
  181.                 } catch (IOException e) {  
  182.                     e.printStackTrace();  
  183.                 }  
  184.             }  
  185.             if (null != out) {  
  186.                 try {  
  187.                     out.close();  
  188.                 } catch (IOException e) {  
  189.                     e.printStackTrace();  
  190.                 }  
  191.             }  
  192.         }  
  193.         return result;  
  194.     }  
  195.   
  196.     /** 
  197.      * 接收File输出图片 
  198.      * 以图片高为标准 按比例缩减图片 
  199.      * @param file 
  200.      *            原图片对象 
  201.      * @param writePath 
  202.      *            小图片存放的路径 
  203.      * @param width 
  204.      *            宽 
  205.      * @param height 
  206.      *            高 
  207.      * @param format 
  208.      *            图片格式 
  209.      * @return 
  210.      */  
  211.     public static String[]  resizeImage(File file, String writePath,  
  212.             Integer width, Integer height, String format) {  
  213.           
  214.         try {  
  215.             BufferedImage inputBufImage = ImageIO.read(file);  
  216.             inputBufImage.getType();  
  217.               
  218.             System.out.println("转前图片高度和宽度:" + inputBufImage.getHeight() + ":"  
  219.                     + inputBufImage.getWidth());  
  220.             if(height >=inputBufImage.getHeight() || width >= inputBufImage.getWidth()){  
  221.                   
  222.                 return null;  
  223.             }else{  
  224.             //double dd = inputBufImage.getHeight() / height;  
  225.             //width = (int) (inputBufImage.getWidth() / dd);  
  226.             //height = (int) (inputBufImage.getHeight() / dd);  
  227.             // 转换  
  228.             ResampleOp resampleOp = new ResampleOp(width, height);  
  229.             BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,null);  
  230.             File fil = new File(writePath);  
  231.             ImageIO.write(rescaledTomato, format,fil);  
  232.             System.out.println("转后图片高度和宽度:" + rescaledTomato.getHeight() + ":"  
  233.                     + rescaledTomato.getWidth());  
  234.             return new String[]{rescaledTomato.getHeight()+"",rescaledTomato.getWidth()+"",fil.length()+""};  
  235.             }  
  236.         } catch (IOException e) {  
  237.             e.printStackTrace();  
  238.             return null;  
  239.         }  
  240.   
  241.     }  
  242.   
  243.     public static String lastname(String name) {  
  244.         String[] ls = name.split("\\.");  
  245.   
  246.         return ls[ls.length - 1];  
  247.     }  
  248.   
  249.     public static String getUUID() {  
  250.   
  251.         return UUID.randomUUID().toString().replaceAll("-""");  
  252.     }  
  253. }  

 第四步:Action中调用工具中的图片压缩功能

 

 

属性:

 

Java代码  收藏代码
  1.        // 图片文件上传  
  2. private File[] image;  
  3. private String[] imageFileName;  
  4. private String[] imageContentType;  

 并提供get set

 

 

具体调用:

Java代码  收藏代码
  1.  Nursetb nursetb = new Nursetb();  
  2. // 根据服务器的文件保存地址找到项目部署的绝对地址  
  3. String webPath = ServletActionContext.getServletContext().getRealPath("/");  
  4. System.out.println(webPath);  
  5. String filePath = "upload/nurimage/"  
  6.         + new SimpleDateFormat("yyyyMMdd").format(new Date()) + "/";  
  7.         
  8. String names[] = null;  
  9. if(null != this.getImage() && this.getImage()[0].length() > 0){  
  10.      names = ImageUtil.uploadImages(this.getImage()[0],   
  11.                    this.getImageFileName()[0], webPath, filePath);  
  12.        
  13. }  
  14. String imgurl = null;  
  15. if(null!=names){  
  16.     imgurl = request.getContextPath()+names[1];  
  17.       
  18.     nursetb.setImgurl(imgurl);  
  19. }  
分享到:
评论

相关推荐

    应用ImageUtil进行图片压缩(源代码)

    在IT行业中,图片处理是一项常见的任务,特别是在网页开发、移动应用和数据分析等领域。为了优化用户体验和减少服务器存储空间,图片的压缩是必不可少的步骤。在这个场景中,我们关注的是使用一个名为`ImageUtil`的...

    ImageUtil 图片渲染第三方类

    除了图片效果,ImageUtil可能还提供了一些额外的功能,比如图片的缩放、压缩、解码等,这些都是iOS图片处理中常见的需求。这些功能可以帮助开发者在保证性能的同时,实现对图片资源的高效管理。 在实际应用中,如果...

    Android imageUtil 裁剪

    Android有许多优秀的图片处理库,如 glide、picasso、 Fresco 等,它们都提供了图片裁剪的功能。`imageUtil`可能是基于其中某个库(例如:android-gif-drawable、android-image-cropper)进行二次开发的。开发者在...

    安卓开发框架工具类相关-常用开发工具类文件复制日志打印图片处理toast.rar

    图片处理工具类ImageUtil通常包含裁剪、缩放、旋转、转换格式等功能。例如,`compressImage()`方法可以用来减小图片文件大小,避免内存溢出;`rotateImage()`用于调整图片方向,尤其是在处理相机拍摄的照片时;`...

    ImageUtil 图片高保真缩放与裁剪,不依赖于任何第三方库

    总之,`ImageUtil`是一个自给自足的图片处理工具,它提供了一种高效且独立的方式来处理图片的缩放和裁剪。通过掌握其内部实现,开发者可以更好地理解和控制图片处理的过程,同时也能够灵活地根据项目需求进行定制。...

    ImageUtil: 图片和字节数组相互转换、图片保存工具类

    Android 图片和字节数组相互转换、图片保存工具类

    android图片Imageutil

    ### 图片工具类(ImageUtil)知识点详解 #### 一、概述 在Android开发过程中,对图片的处理是一项常见的...以上就是关于`ImageUtil`类的详细介绍及应用场景分析,希望能帮助开发者更好地理解和应用这些图片处理技术。

    android工具类 26个实用工具类

    5. **图片处理工具类**:可能包括图片的加载、缩放、裁剪、圆角处理等功能,如`ImageUtil`,可以优化图片加载的性能,避免内存溢出。 6. **文件操作工具类**:如`FileUtil`,提供文件的创建、删除、复制、移动、...

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\010 操作图片\整体图片操作\ImageUtil.java D:\002 我的工具类\010 操作图片\整体图片操作\OperateImage.java D:\002 我的工具类\010 操作图片\整体图片操作\Quant.java D:\002 我的工具类\010 ...

    android开发各种工具类

    6. **图片处理工具类** (ImageUtil) - `compressImage()`:压缩图片以减小体积。 - `loadImageFromUrl()`:从URL加载图片到ImageView。 - `cropImage()`:裁剪图片。 7. **权限检查工具类** (PermissionUtil) -...

    Android开发常见的136个工具类.rar

    6. 图片处理工具类(ImageUtil):包括图片的加载、裁剪、压缩、缓存等功能,对于优化应用性能和节省内存至关重要。 7. 文件操作工具类(FileUtil):提供了读写文件、创建删除文件夹、查找文件等方法,简化文件操作。 ...

    Android常用的工具类

    8. **图片处理工具类** (ImageUtil) 包含图片的加载、压缩、裁剪、缩放等方法,尤其在处理用户上传的图片或者加载网络图片时非常实用。 9. **对话框工具类** (DialogUtil) 可以快速创建和展示各种类型的对话框,...

    安卓开发框架工具类相关-Android开发的通用工具类.zip

    - **图片处理**:如`ImageUtil`,包含图片加载、压缩、裁剪等操作。 - **权限管理**:如`PermissionUtil`,处理Android运行时权限申请。 - **设备信息**:如`DeviceInfo`,获取设备型号、系统版本、屏幕尺寸等信息。...

    Android敏捷开发常用工具类

    四、图片处理工具类(ImageUtil) ImageUtil类通常用于处理图片加载、缩放、裁剪等操作。例如,loadBitmapFromUrl()可以从网络加载图片,resizeBitmap()可以调整图片尺寸,而cropBitmap()则可以裁剪图片的一部分。 五...

    Android-Java开发中用到的工具类收集

    - 例如:`ImageUtil`类可能包含`compressImage()`用于压缩图片大小,`rotateImage()`用于旋转图片。 4. **网络请求**: - Android的网络访问通常使用`HttpURLConnection`、`Volley`、`OkHttp`或`Retrofit`等库。...

    MailUtil 邮件发送工具类

    在JavaMail API中,这涉及到`javax.mail.Session`、`javax.mail.Transport`、`javax.mail.internet.MimeMessage`等类的使用。 邮件发送的核心流程如下: 1. **初始化Session**:使用Properties对象配置邮件服务器...

    ImageUtil.java

    图片自动压缩成设置的大小,根据参数配置,保持图片不失真,使用的java自带的图片处理类,工具类直接运行main方法

    Android快速开发不可或缺的11个工具类

    4. **图片处理工具类(ImageUtil)**:在Android中,图片加载和处理是常见的需求,此类可能包含图片的压缩、裁剪、缩放等方法。比如,`compressImage()`用于减小图片文件大小,以适应内存和存储限制。 5. **JSON解析...

    图片工具类,生成文字图片(JAVA)

    接下来,创建名为`ImageUtil`的工具类,该类包含一个静态方法`generateTextImage`,接收文字内容、图片宽度、高度和背景色作为参数。这个方法将创建一个`BufferedImage`对象,然后在上面绘制文字。 ```java public ...

Global site tag (gtag.js) - Google Analytics