java对图片的裁剪(包括来自网络的图片)
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对图片的裁剪(包括来自网络的图片)的更多相关文章
- 8.进行图片的裁剪,同时使用resize将图片的维度进行变化
1.img.crop((x1, y1, x2, y2)) 进行图片的裁剪 参数说明: x1, y1, x2, y2 表示图片的大小 2. img.resize((w, h)) # 进行图片的维度变化 ...
- Java实现图片的裁剪(包括透明背景)
需求: 有一张位置大小的图片,现在需要根据这张原图得到指定尺寸的图片,且得到的图片要符合原先图片的比例,就是在原图的基础上等比例缩放得到图片后,在进行剪裁,这样保证得到的图片是原图的一部分,而不是将原 ...
- 使用UIImageView展现来自网络的图片
本文转载至 http://www.cnblogs.com/chivas/archive/2012/05/21/2512324.html UIImageView:可以通过UIImage加载图片赋给UII ...
- 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...
- Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...
- Java从网络读取图片并保存至本地
package cn.test.net; import java.io.File; import java.io.FileOutputStream; import java.io.InputStrea ...
- Android LazyList 从网络获取图片并缓存
原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...
随机推荐
- Gtk中的文本视图(GtkTexViewWidget)
Gtk中的文本视图(GtkTexViewWidget) Gtk中的文本视图(GtkTexView Widget) 在本章的Gtk+程序设计教程中,我们将重点介绍 GtkTexView 构件. GtkT ...
- centos解决ping unknown host的问题
当ping www.baidu.com 的时候如果出现 unknown host的提示 再ping一下IP, ping 8.8.8.8 如果此时能ping通,那么就是DNS服务器没有设置,不能解析域名 ...
- iOS真机调试——Certificates, Identifiers &Profiles 简介
Certificates, Identifiers &Profiles 简介 每次到这个页面,我都不知道这几个选项是干啥的,我相信有很多同学跟我一样,所以首先我们就来先介绍下Developer ...
- 使用Windows Azure创建Linux系统虚拟机-上
创建虚拟机来运行Linux 当您在Azure管理门户中使用映像图库时,创建运行Linux的虚拟机很容易.本指南告诉您如何做到这一点,假设你没有使用过Azure. 注意: 即使你不需要使用过Azure虚 ...
- jsp网站与discuz论坛用户同步
需求分析: 要想实现A(jsp网站)和B(discuz论坛)的同步,这里说的同步指的是 在AB网站任意一方注册之后在另一方都可以直接登录 AB两网站之间的用户登陆状态是同步的,在任意一方登录后,另一方 ...
- HW4.4
public class Solution { public static void main(String[] args) { final double KILOMETERS_PER_MILE = ...
- Codeforces Round #311 (Div. 2) D - Vitaly and Cycle(二分图染色应用)
http://www.cnblogs.com/wenruo/p/4959509.html 给一个图(不一定是连通图,无重边和自环),求练成一个长度为奇数的环最小需要加几条边,和加最少边的方案数. 很容 ...
- 东芝超级本从win8到win7
东芝超级本从win8到win7 2014年2月20日 11:08:46 1. 进入BIOS 调出关机选项,按住shift不松手,然后点选关机,彻底关机后,按住f2不松手,按下电源开机,就进 ...
- 关于SpingMVC实现文件下载你所不知道的
http://www.cnblogs.com/yolanda-lee/p/4683422.html 文件的上传下载一般在项目中还是非常实用的,此处专门整理一下文件的下载,至于文件的上传实现将在后续中补 ...
- Filter过滤器(1)
Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...