本文实例讲述了java实现的图片裁剪功能。分享给大家供大家参考,具体如下:

PicCut.java:

package Tsets;

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;

public class PicCut {

public void cut(int x,int y,int width,int height,String srcpath,String subpath) throws IOException {//裁剪方法

FileInputStream is = null;

ImageInputStream iis = null;

try {

is = new FileInputStream(srcpath); //读取原始图片

Iterator it = ImageIO.getImageReadersByFormatName("jpg"); //ImageReader声称能够解码指定格式

ImageReader reader = it.next();

iis = ImageIO.createImageInputStream(is); //获取图片流

reader.setInput(iis, true); //将iis标记为true(只向前搜索)意味着包含在输入源中的图像将只按顺序读取

ImageReadParam param = reader.getDefaultReadParam(); //指定如何在输入时从 Java Image I/O框架的上下文中的流转换一幅图像或一组图像

Rectangle rect = new Rectangle(x, y, width, height); //定义空间中的一个区域

param.setSourceRegion(rect); //提供一个 BufferedImage,将其用作解码像素数据的目标。

BufferedImage bi = reader.read(0, param); //读取索引imageIndex指定的对象

ImageIO.write(bi, "jpg", new File(subpath)); //保存新图片

} finally {

if (is != null)

is.close();

if (iis != null)

iis.close();

}

}

public static void main(String[] args) throws Exception {

PicCut pc = new PicCut();

pc.cut(20, 20, 100, 100,"D:\\1.jpg","D:\\11.jpg");

System.out.println("ok");

}

}

PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:

在线图片转换BASE64工具:http://tools.jb51.net/transcoding/img2base64

ICO图标在线生成工具:http://tools.jb51.net/aideddesign/ico_img

在线Email邮箱图标制作工具:http://tools.jb51.net/email/emaillogo

在线图片格式转换(jpg/bmp/gif/png)工具:http://tools.jb51.net/aideddesign/picext

更多java相关内容感兴趣的读者可查看本站专题:《Java图片操作技巧汇总》、《java日期与时间操作技巧汇总》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》及《Java数据结构与算法教程》。

希望本文所述对大家java程序设计有所帮助。

java中对图片的裁剪_java实现的图片裁剪功能示例相关推荐

  1. java中compare语句的用法_Java RuleBasedCollator compare()用法及代码示例

    java.text.RuleBasedCollat​​or类的compare()方法用于比较两个对象的强度,并且根据结果将返回0,正值和负值作为输出. 用法: public int compare(O ...

  2. java在dog中定义name变量,组合构造 冯跃峰 java中组合的应用(不相干的类共同完成一个功能)+构造器回顾...

    java中组合的应用(不相干的类共同完成一个功能)+构造器回顾:今天我们了解到java的组合.可以说java组合是非常的重要的.可以对类进行封装,将底层的内容封装起来.甚至于java的继承都没有其重要 ...

  3. Java中的几种引用类型_Java中的几种引用类型(转载)

    Java中的对象引用主要有以下几种类型: 1)强可及对象(strongly reachable): 可以通过强引用访问的对象,一般来说,我们平时写代码的方式都是使用的强引用对象,比如下边的代码段: S ...

  4. java中write方法报错_Java中管道报错:Write end dead

    今天看了下关于管道的通信,Java中的管道只能在同一进程的不同线程间通信.今天测试两个线程进行通信发现报错.下面是我测试的代码. package com.wpl.testIO; import java ...

  5. java图片轮播_java制作广告图片自动轮播控件

    首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...

  6. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  7. java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试

    Java技巧:用匿名类来实现简化程序调试 在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle).但其实,它们对于debug也很有帮助.本文将 ...

  8. java中用于选择按钮的语句_java程序员考试套题1

    Java练习一 一.选择题 1.在Java中,下列()方法可以把JFrame对象jFrame的布局管理器设为FlowLayout 类型. A.jFrame.setLayout(new FlowLayo ...

  9. java中集合的模型特点_Java 学习笔记(十四)集合

    集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...

  10. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

最新文章

  1. matlab实现移动平均
  2. python比c语言好学吗-对于初学者而言,python和 c语言先学哪个好
  3. Java应用梯度下降求解线性SVM模型参考代码
  4. mongodb 时间戳 java_Java将日期类型Date时间戳转换为MongoDB的时间类型数据
  5. SQLMap用户手册【超详细】
  6. 使用tmpfs存放MySQL的临时文件的问题一则
  7. html设置窗口最小大小,调整HTML 5画布的大小以适应窗口
  8. 利用melendy插入参考文献_如何利用mendeley搞定SCI论文参考文献,这篇一定要看
  9. 为什么要用C语言实现面向对象
  10. 简析Windows Linux的内核映射
  11. jQuery计算时间差和阴阳历转换
  12. [渝粤教育] 四川大学 营养与食品卫生学Ⅱ 参考 资料
  13. MyBatis choose标签
  14. 计算机命令提示符开热点,将win7电脑变身wifi热点操作方法_电脑怎么开热点win7...
  15. 两种方法用宏定义写出swap(x,y)
  16. C语言两种方法求圆的面积与周长编程
  17. 比较好用的CDN加速节点
  18. linux c++ 文件修改时间,linux下C获取系统时间的方法
  19. (一)大数据学习引言——大数据概述
  20. JSD-2204-WebServer(项目)-二维码-Day16

热门文章

  1. Codeforces1336A Linova and Kingdom (思维)
  2. Java深圳工作面试经历(真实经历)!!!
  3. 平肝息风药题库【1】
  4. android listener使用实例,如何使用lambda表达式/缩短onclicklisteners android studio(示例代码)...
  5. 前端web设计师_Web设计师的时尚Web设计主题
  6. CAD图形的缩放——放大镜
  7. Word中生成英文目录
  8. ANC 调试 -FF 降噪原理和调试
  9. 计算机怎么快捷截图桌面,屏幕截屏的快捷键是什么 6种电脑截图快捷键操作方法...
  10. 如何在python同一行内输入若干个数?