java 根据坐标截取图片实例代码
程序员文章站
2024-03-04 10:25:02
java 根据坐标截取图片
实例代码:代码中有不是注释,很好看懂!
package com.json.test;
import java.awt....
java 根据坐标截取图片
实例代码:代码中有不是注释,很好看懂!
package com.json.test; 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 operateimage { // ===源图片路径名称如:c:\1.jpg private string srcpath ; // ===剪切图片存放路径名称.如:c:\2.jpg private string subpath ; // ===剪切点x坐标 private int x ; private int y ; // ===剪切点宽度 private int width ; private int height ; public operateimage() { } public operateimage( int x, int y, int width, int height) { this .x = x ; this .y = y ; this .width = width ; this .height = height ; } /** * 对图片裁剪,并把裁剪完蛋新图片保存 。 */ public void cut()throws ioexception { fileinputstream is = null ; imageinputstream iis = null ; try { // 读取图片文件 is =new fileinputstream(srcpath); /* * 返回包含所有当前已注册 imagereader 的 iterator,这些 imagereader * 声称能够解码指定格式。 参数:formatname - 包含非正式格式名称 . *(例如 "jpeg" 或 "tiff")等 。 */ iterator < imagereader > it=imageio.getimagereadersbyformatname("jpg"); 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(x, y, 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(); } } public int getheight() { return height; } public void setheight( int height) { this .height = height; } public string getsrcpath() { return srcpath; } public void setsrcpath(string srcpath) { this .srcpath = srcpath; } public string getsubpath() { return subpath; } public void setsubpath(string subpath) { this .subpath = subpath; } public int getwidth() { return width; } public void setwidth( int width) { this .width = width; } public int getx() { return x; } public void setx( int x) { this .x = x; } public int gety() { return y; } public void sety( int y) { this .y = y; } public static void main(string[] args) { operateimage operateimage = new operateimage(20, 20, 100, 100); operateimage.srcpath = "c:/test/1.jpg"; operateimage.subpath = "c:/test/2.jpg"; try { operateimage.cut(); } catch (ioexception e) { e.printstacktrace(); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!