文档章节

java 根据位置,长度宽度截取图片

二两豆腐
 二两豆腐
发布于 2015/11/24 14:52
字数 479
阅读 38
收藏 0

 给出一张原图片,然后根据需要在这张图片上的位置,需要截取的长度和宽度,来截取图片。

 import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator;  import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream;  以上是需要引入的类 下面是截取图片方法  String srcpath;//文件路径 int top; int left; int width, height;   public void cut() throws IOException,Exception{                            FileInputStream is = null ;             ImageInputStream iis =null ;                       try{                     //读取图片文件                 is = new FileInputStream(srcpath);                                   /**//*                  * 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader                   * 声称能够解码指定格式。 参数:formatName - 包含非正式格式名称 .                  *(例如 "jpeg" 或 "tiff")等 。                   */                                                               Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(picformat);                  ImageReader reader = it.next();                  //获取图片流                  iis = ImageIO.createImageInputStream(is);                                     /**//*                   * <p>iis:读取源.true:只向前搜索 </p>.将它标记为 ‘只向前搜索’。                  * 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader                  * 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。                  */                 reader.setInput(iis,true) ;                                  /**//*                   * <p>描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O                   * 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件                  * 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回                   * ImageReadParam 的实例。                   */                 ImageReadParam param = reader.getDefaultReadParam();                                    /**//*                  * 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象                  * 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。                   */                  Rectangle rect = new Rectangle(top, left, width, height);                                                      //提供一个 BufferedImage,将其用作解码像素数据的目标。                  param.setSourceRegion(rect);                  /**//*                  * 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将                  * 它作为一个完整的 BufferedImage 返回。                  */                 BufferedImage bi = reader.read(0,param);                                            //保存新图片                  ImageIO.write(bi, "jpg", new File(subpath));                  }                          finally{                 if(is!=null)                    is.close() ;                        if(iis!=null)                    iis.close();              }                        }

 

© 著作权归作者所有

二两豆腐
粉丝 22
博文 103
码字总数 87685
作品 0
朝阳
高级程序员
私信 提问
Java基础教程,第四讲,字符串使用以及常用字符串处理函数

字符串处理是所有编程语言必学,也是必会的知识。大家一定要认真学完本次课程。 学完此次课程,我能做什么? 我们可以掌握常用的字符串处理函数,来应对项目的要求。 学习此次课程,需要多久...

程序员补给栈
02/02
20
0
ShearPhoto 2.0 发布,支持HTML5本地截取头像,支持美图秀秀特效,支持几十M数码相片压缩截取

从shearphoto 1.5直接跳跃到shearphoto 2.0,这是shearphoto重大革新。本来我是想shearphoto 1.6 、1.7、 1.8 慢慢升的,但是这样升级只会让shearphoto慢慢走向灭亡!结果我又辛苦了一个多星...

明哥先生
2015/09/05
3.6K
15
Java 性能优化之 String 篇

简介: String 方法用于文本分析及大量字符串处理时会对内存性能造成不可低估的影响。我们在一个大文本数据分析的项目中(我们统计一个约 300MB 的 csv 文件中所有单词出现的次数)发现,用于...

coda
2012/05/21
29
0
Netty(三) 什么是 TCP 拆、粘包?如何解决?

前言 记得前段时间我们生产上的一个网关出现了故障。 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信。 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议。...

crossoverJie
2018/08/06
118
0
《Java从小白到大牛》之第9章 字符串

《Java从小白到大牛》纸质版已经上架了!!! 由字符组成的一串字符序列,称为“字符串”,在前面的章节中也多次用到了字符串,本章将重点介绍。 Java中的字符串 {#java} Java中的字符串是由...

tony关东升
2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
17分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
20分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
42分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
43分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
44分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部