• java对图片的裁剪(包括来自网络的图片)


      1 import java.awt.Rectangle;
      2 import java.awt.image.BufferedImage;
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.InputStream;
      6 import java.net.HttpURLConnection;
      7 import java.net.URL;
      8 import java.util.Calendar;
      9 import java.util.Date;
     10 import java.util.Iterator;
     11 import java.util.Random;
     12 
     13 import javax.imageio.ImageIO;
     14 import javax.imageio.ImageReadParam;
     15 import javax.imageio.ImageReader;
     16 import javax.imageio.stream.ImageInputStream;
     17 
     18 /**
     19  * 剪裁图片(从网络上获取图片) 21  * @description
     22  * @time  2013-2-24下午02:07:00 24  * @version
     25  */
     26 public class CutImageUtil {
     27 
     28     private static final String DESTIMAGEPATH = "e://";
     29     private static final String BASE_IMAGE_URL="http://pimages3.tianjimedia.com/resources/product/";
     30     /**剪切点X坐标*/
     31     private static int x=16;
     32     /**剪切点Y坐标*/
     33     private static int y=22;
     34     /**剪切点宽度*/
     35     private static int width=784;
     36     /**剪切点高度*/
     37     private static int height=560;
     38 
     39     /**
     40      *
     41      * @Description: 剪切网络图片
     42      * String
     43      */
     44     public static String cutFromUrl(String imageUrl) {
     45         String suffix=imageUrl.substring(imageUrl.lastIndexOf("."));
     46         String fileName="";
     47         String fileNameAndPath="";
     48         InputStream is = null;
     49         ImageInputStream iis = null;
     50         String result=null;
     51         try {
     52             /**读取图片*/
     53             Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
     54             ImageReader reader = it.next();
     55             /**获取图片流*/
     56             URL url = new URL(imageUrl);
     57             HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
     58             /**设置请求方式为"GET"*/
     59             httpConn.setRequestMethod("GET");
     60             /**超时响应时间为5秒*/
     61             httpConn.setConnectTimeout(5 * 1000);
     62             httpConn.connect();
     63             is = httpConn.getInputStream();
     64 
     65             iis = ImageIO.createImageInputStream(is);
     66             reader.setInput(iis, true);
     67 
     68             ImageReadParam param = reader.getDefaultReadParam();
     69             Rectangle rect = new Rectangle(x, y, width, height);
     70             param.setSourceRegion(rect);
     71             BufferedImage bi = reader.read(0, param);
     72 
     73             fileName=GlobalMethodUtil.createFileName(suffix);
     74             fileNameAndPath=GlobalMethodUtil.createDir("/home/tmp/resources/product/")+fileName;
     75             if(fileNameAndPath==null||fileNameAndPath.equals("")){
     76                 result="";
     77             }else{
     78                 result=BASE_IMAGE_URL+fileNameAndPath.substring(fileNameAndPath.indexOf("product/")+8);
     79             }
     80             ImageIO.write(bi, "jpg", new File(fileNameAndPath));
     81         } catch (Exception ex) {
     82             ex.printStackTrace();
     83         } finally {
     84             try {
     85                 if (is != null) {
     86                     is.close();
     87                 }
     88                 if (iis != null) {
     89                     iis.close();
     90                 }
     91             } catch (Exception ex) {
     92                 ex.printStackTrace();
     93             }
     94         }
     95         return result;
     96     }
     97 
     98     /**
     99      *
    100      * @Description: 剪切本地图片
    101      *  @param imagePath
    102      * String
    103      */
    104     public static String cutLocalImage(String imagePath) {
    105         String fileName="";
    106         String fileNameAndPath="";
    107         FileInputStream fis = null;
    108         ImageInputStream iis = null;
    109         try {
    110             /**读取图片*/
    111             Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
    112             ImageReader reader = it.next();
    113             /**获取图片流*/
    114             fis = new FileInputStream(imagePath);
    115             iis = ImageIO.createImageInputStream(fis);
    116             reader.setInput(iis, true);
    117 
    118             ImageReadParam param = reader.getDefaultReadParam();
    119             Rectangle rect = new Rectangle(x, y, width, height);
    120             param.setSourceRegion(rect);
    121             BufferedImage bi = reader.read(0, param);
    122 
    123             fileName=GlobalMethodUtil.createFileName("jpg");
    124             fileNameAndPath=GlobalMethodUtil.createDir("/home/tmp/qicheInfo/resources/product/")+fileName;
    125             ImageIO.write(bi, "jpg", new File(DESTIMAGEPATH + new Date().getTime() + "." + "jpg"));
    126         } catch (Exception ex) {
    127             ex.printStackTrace();
    128         } finally {
    129             try {
    130                 if (fis != null) {
    131                     fis.close();
    132                 }
    133                 if (iis != null) {
    134                     iis.close();
    135                 }
    136             } catch (Exception ex) {
    137                 ex.printStackTrace();
    138             }
    139         }
    140         return BASE_IMAGE_URL+fileNameAndPath.substring(fileNameAndPath.indexOf("product/")+8);
    141     }
    142 
    143     private static class GlobalMethodUtil {
    144 
    145         /**
    146          * 返回文件名(file)
    147          * @Description:
    148          * @return
    149          */
    150         public static String createFileName(String suffix) {
    151             /**结合目录和文件名 生成唯一标识符*/
    152             Calendar c = Calendar.getInstance();
    153             /**利用小时分钟毫秒和源文件的文件名生成新文件名+文件后缀*/
    154             String name = c.get(Calendar.HOUR) + "" + c.get(Calendar.MINUTE) + "" + c.get(Calendar.SECOND)
    155                     + c.get(Calendar.MILLISECOND) + randStr()
    156                     + suffix;
    157             return name;
    158         }
    159 
    160         /**
    161          * 利用26个字母生成随机字母组合
    162          * @Description:
    163          * @return
    164          */
    165         public static String randStr() {
    166             String[] rands = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "k", "o", "p", "q",
    167                     "r", "s", "t", "u", "v", "w", "x", "y", "z"};
    168             String randstr = "";
    169             /**生成8个随机字母组合*/
    170             for (int i = 0; i < 8; i++) {
    171                 randstr += rands[new Random().nextInt(26)];
    172             }
    173             return randstr;
    174         }
    175 
    176         /**
    177          * 创建文件目录
    178          * @Description:
    179          * @return 文件目录路径
    180          */
    181         public static String createDir(String path) {
    182             Calendar c = Calendar.getInstance();
    183             String dir = path;
    184             dir += c.get(Calendar.YEAR) + "" + ((c.get(Calendar.MONTH) + 1)<10?"0"+(c.get(Calendar.MONTH) + 1):(c.get(Calendar.MONTH) + 1)) + "" + (c.get(Calendar.DATE)<10?"0"+c.get(Calendar.DATE):c.get(Calendar.DATE)) + "/";
    185             File tempDir = new File(dir);
    186             /**判断文件路径是否存在*/
    187             if (!tempDir.exists()) {
    188                 /**不存在就创建文件目录*/
    189                 tempDir.mkdirs();
    190             }
    191             return dir;
    192         }
    193 
    194         /**
    195          *
    196          * @Description: 获取分页的总页数
    197          *  @param count 数据总量
    198          *  @param size 每页分页数量
    199          *  @return
    200          * int
    201          */
    202         public static int getPageSize(int count,int size){
    203             return count%size!=0?(count/size+1):(count/size);
    204         }
    205 
    206     }
    207 }
  • 相关阅读:
    ConfigurableApplicationContext
    JCA-Java加密框架
    Resource通配符路径 ——跟我学spring3
    Spring学习总结(四)——表达式语言 Spring Expression Language
    Spring讲解-----------表达式语言
    java多线程详解(5)-Threadlocal用法
    ThreadLocal 详解
    MessageFormat
    WPF中的导航框架(一)——概述
    在WPF中实现玻璃模糊效果
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3593910.html
Copyright © 2020-2023  润新知