import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Random; import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream; /**
* 剪裁图片(从网络上获取图片) * @description
* @time 2013-2-24下午02:07:00 * @version
*/
public class CutImageUtil { private static final String DESTIMAGEPATH = "e://";
private static final String BASE_IMAGE_URL="http://pimages3.tianjimedia.com/resources/product/";
/**剪切点X坐标*/
private static int x=16;
/**剪切点Y坐标*/
private static int y=22;
/**剪切点宽度*/
private static int width=784;
/**剪切点高度*/
private static int height=560; /**
*
* @Description: 剪切网络图片
* String
*/
public static String cutFromUrl(String imageUrl) {
String suffix=imageUrl.substring(imageUrl.lastIndexOf("."));
String fileName="";
String fileNameAndPath="";
InputStream is = null;
ImageInputStream iis = null;
String result=null;
try {
/**读取图片*/
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
/**获取图片流*/
URL url = new URL(imageUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
/**设置请求方式为"GET"*/
httpConn.setRequestMethod("GET");
/**超时响应时间为5秒*/
httpConn.setConnectTimeout(5 * 1000);
httpConn.connect();
is = httpConn.getInputStream(); iis = ImageIO.createImageInputStream(is);
reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam();
Rectangle rect = new Rectangle(x, y, width, height);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0, param); fileName=GlobalMethodUtil.createFileName(suffix);
fileNameAndPath=GlobalMethodUtil.createDir("/home/tmp/resources/product/")+fileName;
if(fileNameAndPath==null||fileNameAndPath.equals("")){
result="";
}else{
result=BASE_IMAGE_URL+fileNameAndPath.substring(fileNameAndPath.indexOf("product/")+8);
}
ImageIO.write(bi, "jpg", new File(fileNameAndPath));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
if (iis != null) {
iis.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
return result;
} /**
*
* @Description: 剪切本地图片
* @param imagePath
* String
*/
public static String cutLocalImage(String imagePath) {
String fileName="";
String fileNameAndPath="";
FileInputStream fis = null;
ImageInputStream iis = null;
try {
/**读取图片*/
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
/**获取图片流*/
fis = new FileInputStream(imagePath);
iis = ImageIO.createImageInputStream(fis);
reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam();
Rectangle rect = new Rectangle(x, y, width, height);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0, param); fileName=GlobalMethodUtil.createFileName("jpg");
fileNameAndPath=GlobalMethodUtil.createDir("/home/tmp/qicheInfo/resources/product/")+fileName;
ImageIO.write(bi, "jpg", new File(DESTIMAGEPATH + new Date().getTime() + "." + "jpg"));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
if (iis != null) {
iis.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
return BASE_IMAGE_URL+fileNameAndPath.substring(fileNameAndPath.indexOf("product/")+8);
} private static class GlobalMethodUtil { /**
* 返回文件名(file)
* @Description:
* @return
*/
public static String createFileName(String suffix) {
/**结合目录和文件名 生成唯一标识符*/
Calendar c = Calendar.getInstance();
/**利用小时分钟毫秒和源文件的文件名生成新文件名+文件后缀*/
String name = c.get(Calendar.HOUR) + "" + c.get(Calendar.MINUTE) + "" + c.get(Calendar.SECOND)
+ c.get(Calendar.MILLISECOND) + randStr()
+ suffix;
return name;
} /**
* 利用26个字母生成随机字母组合
* @Description:
* @return
*/
public static String randStr() {
String[] rands = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "k", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z"};
String randstr = "";
/**生成8个随机字母组合*/
for (int i = 0; i < 8; i++) {
randstr += rands[new Random().nextInt(26)];
}
return randstr;
} /**
* 创建文件目录
* @Description:
* @return 文件目录路径
*/
public static String createDir(String path) {
Calendar c = Calendar.getInstance();
String dir = path;
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)) + "/";
File tempDir = new File(dir);
/**判断文件路径是否存在*/
if (!tempDir.exists()) {
/**不存在就创建文件目录*/
tempDir.mkdirs();
}
return dir;
} /**
*
* @Description: 获取分页的总页数
* @param count 数据总量
* @param size 每页分页数量
* @return
* int
*/
public static int getPageSize(int count,int size){
return count%size!=0?(count/size+1):(count/size);
} }
}

java对图片的裁剪(包括来自网络的图片)的更多相关文章

  1. 8.进行图片的裁剪,同时使用resize将图片的维度进行变化

    1.img.crop((x1, y1, x2, y2)) 进行图片的裁剪 参数说明: x1, y1, x2, y2 表示图片的大小 2. img.resize((w, h)) # 进行图片的维度变化 ...

  2. Java实现图片的裁剪(包括透明背景)

    需求: 有一张位置大小的图片,现在需要根据这张原图得到指定尺寸的图片,且得到的图片要符合原先图片的比例,就是在原图的基础上等比例缩放得到图片后,在进行剪裁,这样保证得到的图片是原图的一部分,而不是将原 ...

  3. 使用UIImageView展现来自网络的图片

    本文转载至 http://www.cnblogs.com/chivas/archive/2012/05/21/2512324.html UIImageView:可以通过UIImage加载图片赋给UII ...

  4. 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...

  5. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  6. Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...

  7. Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

    前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...

  8. Java从网络读取图片并保存至本地

    package cn.test.net; import java.io.File; import java.io.FileOutputStream; import java.io.InputStrea ...

  9. Android LazyList 从网络获取图片并缓存

    原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...

随机推荐

  1. 五指cms标签说明汇总

    1.栏目列表标签 只有一级导航: {wz:content action="category" cid="0" pagesize="100" ...

  2. Spring笔记(四)SpingAOP

    需要的Jar包(String3.2) com.springsource.net.sf.cglib-2.2.0.jar // 作用于cglib方式的动态代理 com.springsource.org.a ...

  3. iOS 设置connect超时

    NSLock *theLock; [theLock lock]; int fd, error; struct sockaddr_in addr; ))<) { cout<<" ...

  4. java 访问权限控制

    java提供四种访问权限: public > protected > 包访问权限(无关键词) > private 包:库单元 对于包访问权限,一个包内的都可以访问. 在eclipse ...

  5. AJAX中文乱码PHP完美解决(IE和Firefox兼容)

    最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助. 众所周知,使用AJAX传送和接收中文参数时,如果不在客 ...

  6. clock_t与time_t的区别及联系

    clock_t <ctime> Clock type Type capable of representing clock tick counts and support arithmet ...

  7. 如何用C#检查硬盘是否是固态硬盘SSD

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何用C#检查硬盘是否是固态硬盘SSD.

  8. MongoDB 的创建、查询、更新、删除

    MongoDB数据库中,创建.查询.更新.删除操作的对象是集合. 1.查看某个数据库中有哪些集合,在此之前需要使用数据库 C:\Windows\system32>mongo MongoDB sh ...

  9. cocos2d-x 卡牌翻牌效果的实现

    转自:http://blog.csdn.net/yanghuiliu/article/details/9115833 这个能实现翻牌的action就是CCOrbitCamera. static CCO ...

  10. Java获取泛型的Class对象

    工作中瞄到的,在此收集了 public class RawDao<T> { protected Class<T> clazz; @SuppressWarnings(" ...