JAVA图片裁剪工具类

<span style="font-size:14px;">package org.oms.avatar.util;import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
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;/*** 图片裁剪工具类* * @author Sunlight**/
public class ImageUtil {/*** 图片裁剪,并把裁剪完的新图片保存 。* * @param srcPath*           <strong> 源图片路径</strong>* @param subPath*            <strong>裁剪图片存放完整的路径,如:D:\\img_200×200.jpg</strong>* @param x*            剪切点x坐标* @param y*            剪切点y坐标* @param width*            剪切宽度* @param height*            剪切高度* @return 返回裁剪后的图片名称*/public static void CutImage(String srcPath, String subPath, int x, int y, int width, int height) {try {// 读取源图像BufferedImage bi = ImageIO.read(new File(srcPath));int srcWidth = bi.getWidth();// 原图宽度int srcHeight = bi.getHeight();// 原图高度// 若原图大小大于大于切片大小,则进行切割if (srcWidth >= width && srcHeight >= height) {Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);ImageFilter cropFilter = new CropImageFilter(x, y, width, height);Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);Graphics g = tag.getGraphics();g.drawImage(img, 0, 0, null);g.dispose();ImageIO.write(tag, "JPEG", new File(subPath));}} catch (IOException e) {e.printStackTrace();}}/*** 对图片裁剪,并把裁剪完的新图片保存 。* * @param srcpath*            <strong>源图片路径</strong>* @param subpath*            <strong>剪切图片存放路径</strong>* @param x*            剪切点x坐标* @param y*            剪切点y坐标* @param width*            剪切宽度* @param height*            剪切高度* @throws IOException*/public static void cut(String srcpath, String subpath, int x, int y, int width, int height) throws IOException {FileInputStream fis = null;ImageInputStream iis = null;try {// 读取图片文件fis = new FileInputStream(srcpath);String suffix = srcpath.substring(srcpath.lastIndexOf(".") + 1);// 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式。// 参数:formatName - 包含非正式格式名称 .(例如 "jpeg" 或 "tiff")等 。Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(suffix);ImageReader reader = it.next();// 获取图片流iis = ImageIO.createImageInputStream(fis);// iis:读取源.true:只向前搜索 </p>.将它标记为 ‘只向前搜索’。// 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。reader.setInput(iis, true);// 描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。// 用于特定图像格式的插件 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回// ImageReadParam 的实例。ImageReadParam param = reader.getDefaultReadParam();// 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle// 对象的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。Rectangle rect = new Rectangle(x, y, width, height);// 提供一个 BufferedImage,将其用作解码像素数据的目标。param.setSourceRegion(rect);// 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将// 它作为一个完整的BufferedImage 返回。BufferedImage bi = reader.read(0, param);// 保存新图片ImageIO.write(bi, "JPEG", new File(subpath));} finally {if (fis != null)fis.close();if (iis != null)iis.close();}}
}
</span>

两种方法都可以实现相同的功能,此时保存日后必定会用到!

JAVA图片裁剪工具类相关推荐

  1. java图片压缩工具类

    java图片压缩工具类 PicCompressUtil.java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...

  2. TKImageView-可定制样式的图片裁剪工具类

    TKImageView-可定制样式的图片裁剪工具类 最近接连做了几个项目,都用到了图片裁剪功能,每个项目对裁剪功能的要求基本一致,区别只是样式上的不同,于是想写一个可定制样式的图片裁剪工具类. 主要功 ...

  3. Java之图片裁剪工具类-yellowcong

    对于图片,我们需要做的大致有,图片裁剪,添加水印和文字的操作,图片裁剪工具这个只包含了图片裁剪,后面的水印功能我会陆续添加上来 图片裁剪工具 package com.yellowcong.utils; ...

  4. java图片压缩工具类(指定压缩大小)

    1:先导入依赖 <!--thumbnailator图片处理--><dependency><groupId>net.coobird</groupId>&l ...

  5. Java图片压缩工具类(递归压缩到指定大小范围)

    Java图片压缩工具 工具类使用场景 公司做人脸识别项目时候需要上传学生.家长.教师.访客的正面照图片,但是人脸识别机器有限制只接收200KB-1M的图片,所以必须做图片压缩到指定范围大少. APP上 ...

  6. java图片处理类(图片水印,图片缩放)

    可实现以下常用功能:缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等代码如下 复制代码 import java.awt.AlphaComposite; import java.awt ...

  7. java图片缩放工具类,一个JAVA图形缩放处置工具类

    一个JAVA图形缩放处理工具类 调用的例子 import java.io.FileOutputStream; import java.io.IOException; import javax.imag ...

  8. java图片切割类任务书_基于Java的截图工具(可储存编辑)的设计与实现毕业论文+任务书+翻译及原文+答辩PPT+源码+辅导视频...

    基于Java的截图工具(可储存编辑)的设计与实现 摘要 当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出. 本软件采用Java语言进行模拟qq截 ...

  9. Java学习路线!java图片处理类

    栈和队列部分(10) 设计一个有getMin功能的栈(士★☆☆☆) 由两个栈组成的队列(尉★★☆☆) 如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 猫狗队列(士★☆☆☆) 用一个栈实现另一个栈的排 ...

最新文章

  1. 《JAVA程序设计》第七周学习总结
  2. 剑指OFFER之二维数组中的查找(九度OJ1384)
  3. 面向对象中的修饰关键词
  4. java+的数组分割符_Java:使用分隔符连接基元数组
  5. 白噪音和粉红噪音煲机_10小时煲机后,HIFIMAN TWS600给你不一样的听觉盛宴
  6. Linux使用openssl实现RSA非对称加密
  7. Asp.Net母版页元素ID不一致的体现
  8. 计算机EV录屏培训体会,停课不停学19|好用的EV录屏软件助力线上教学
  9. LibCef中的一些坑
  10. C# 实现Excel导出图片
  11. 引央视主播康辉大笑的度晓晓,是个只会吹彩虹屁的 AI 助手吗?
  12. python学习态度_python基础一 day29 学习方法(课前谈心)
  13. 老男孩教育春节假期安排
  14. linux提示Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
  15. CSS 标签诡异添加 injected stylesheet
  16. 国际性PRO-SID研究开始招募患者,该研究评估Panzyga(R)用于慢性淋巴细胞白血病和继发性免疫缺陷患者的一级预防性治疗
  17. 微型计算机中将运算器和芯片,微机的重要特点之一是将计算机硬件中的运算器和控制器集成在一块芯片上,称为微处理器。 - 试题答案网问答...
  18. pytest和allure生成测试报告
  19. amd k14主板参数_看U选主板:AMD A8-5600K主板怎么选
  20. CREO 用最简单的方法做个莫比乌斯带

热门文章

  1. 用不可逆算法MD5进行加密后,如何进行登录验证
  2. LaTex排版一二三
  3. 领域驱动设计实践框架-COLA的解读
  4. Kali工具库之cadaver
  5. 【Spring教程】框架体系介绍
  6. 流量变现平台市场分析报告-
  7. Java引用和C++引用
  8. DWORD与ULONG的区别
  9. 什么是大数据lambda架构
  10. iOS release版本