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 }