`
rayln
  • 浏览: 424273 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

裁剪图片

    博客分类:
  • Java
 
阅读更多
转载:http://blog.csdn.net/lql876381722/article/details/2203512

直接看code:
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;

/**
 * 
 * 
 * @author <a href="mailto:lqinglong@yahoo.cn">qinglong.lu</a>
 * 
 *         2008-3-21
 */
public class CutImage {
	// ===源图片路径名称如: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 CutImage() {

	}

	public CutImage(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) throws Exception {

		String name = "C:/Users/Public/Pictures/Sample Pictures/CgAPDU7dS4SKkC4wAALR2Tww_lw325_700x0x1.JPG";

		CutImage o = new CutImage(0, 0, 640, 640);
		o.setSrcpath(name);
		o.setSubpath("F:/2.jpg");
		o.cut();

	}

}
分享到:
评论

相关推荐

    java处理裁剪图片(更改图片大小)

    在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...

    word2021如何裁剪图片.docx

    "Word 2021 如何裁剪图片" 在 Word 2021 文档中,用户可以方便地对图片进行裁剪操作,以截取图片中最需要的部分。裁剪图片的操作步骤如下所述: 裁剪图片的准备工作 在开始裁剪图片之前,用户需要将图片的环绕...

    android 自定义比例裁剪图片(拍照 相册)方式 16:9 10:7 自定义

    在裁剪图片时,我们通常会使用`ACTION_IMAGE_CAPTURE`和`ACTION_PICK`这两个Intent。 1. **拍照裁剪** - 当用户需要通过相机拍照并立即裁剪时,我们创建一个`ACTION_IMAGE_CAPTURE` Intent,并通过`EXTRA_OUTPUT`...

    HTML5 canvas 图片裁剪 图片裁切

    开发者通过原创的方式实现了这一功能,使得用户能够在浏览器中方便地裁剪图片,尤其是结合九宫格模式,增加了裁剪的灵活性和趣味性。 总之,HTML5的canvas为图片裁剪提供了强大的支持,结合JavaScript的动态交互...

    C# 像PS一样裁剪原图片,鼠标拖动裁剪图片

    在这个特定的项目中,我们关注的是如何实现“像PS一样裁剪原图片”,即在C#环境中模仿Photoshop的裁剪功能,允许用户通过鼠标拖动来裁剪图片。这涉及到图像的选取、坐标计算、缩放以及纠偏、亮度和对比度调整等技术...

    WinForm在PictrueBox控件上建立矩形选框裁剪图片

    在Windows Forms(WinForm)开发环境中,我们经常需要处理图像操作,例如裁剪图片。本教程将详细讲解如何在PictureBox控件上实现一个简单的矩形选框裁剪功能。首先,我们需要了解WinForm的基本概念以及PictureBox...

    js裁剪图片代码

    图片裁剪是网页中常见的交互功能,用户可以通过拖动选择区域或者调整比例来裁剪图片,以满足特定尺寸或展示需求。这种技术尤其在上传头像、产品图片或其他需要个性化定制的场景中非常实用。 实现js裁剪图片的核心...

    iOS裁剪图片,抠图,比例裁剪

    裁剪图片的核心是使用`CGImage`和`CGAffineTransform`。首先,我们可以用`UIImage`的`CGImage`属性获取图片的原始CGImage对象,然后通过设置裁剪区域的转换矩阵(`CGAffineTransformMakeRect`)来确定裁剪范围。最后...

    选择图片,拍照或从相机选择并裁剪图片

    总结起来,实现“选择图片,拍照或从相机选择并裁剪图片,且显示出来”的功能,涉及到的关键技术点包括:使用Intent调用系统服务、处理返回结果、图片裁剪、以及图片显示。在实际开发中,根据不同的平台(Android、...

    Asp版的裁剪图片

    标题中的"Asp版的裁剪图片"指的是使用Asp技术来开发一个能够处理图片裁剪的系统。这个系统允许用户上传图片,并根据需求裁剪成特定尺寸或比例,以便于后续的展示或存储。这种功能对于网站设计、内容管理以及用户个性...

    使用Android系统调用裁剪图片并保存demo

    以上就是使用Android系统调用裁剪图片并保存的整个流程。这个功能涉及到了Intent的交互、图片选择、图片裁剪以及文件操作等多个知识点,对于Android开发者来说是必备技能之一。在实际项目中,还可以根据需求添加更多...

    ios拍照后按范围裁剪图片demo

    在iOS开发中,实现“ios拍照后按范围裁剪图片demo”涉及到多个关键知识点,主要集中在用户界面(UI)设计、图像处理以及照片权限管理。下面将详细解释这些技术要点。 首先,我们要创建一个自定义的拍照页面。这通常...

    jQuery点击头像上传本地预览裁剪图片

    在IT领域,尤其是在Web开发中,用户界面的交互性至关重要,而"jQuery点击头像上传本地预览裁剪图片"就是一个提升用户体验的经典案例。这个功能允许用户在上传头像前预览并裁剪图片,提高了上传过程的可控性和便捷性...

    图片按照指定宽度或者高度等比例压缩图片以及裁剪图片

    "图片按照指定宽度或高度等比例压缩图片以及裁剪图片"这个主题涉及到图像处理的关键技术,包括图像缩放和裁剪。接下来,我们将深入探讨这两个概念。 首先,**等比例压缩图片**是保持图片原有宽高比的情况下调整图片...

    H5实现裁剪图片并上传

    3. **裁剪图片**:通过Croppe插件提供的API设置裁剪参数,如裁剪区域的宽高比、位置等。当用户完成裁剪后,调用插件的裁剪方法获取裁剪后的图片数据。 4. **转换为上传格式**:由于服务器通常不接受Canvas的位图...

    批量裁剪图片程序

    该程序用于裁剪图片,在深度学习领域前期处理数据能够用到

    VB裁剪图片

    在VB(Visual Basic)...总的来说,VB实现裁剪图片的关键在于理解`Bitmap`和`Graphics`类的用法,以及如何利用`Clone`方法进行像素级别的操作。通过熟练掌握这些知识点,你可以创建出一个强大而灵活的图片编辑工具。

    Qt编写的裁剪图片软件

    这个"Qt编写的裁剪图片软件"显然是一个利用Qt库实现的图形用户界面(GUI)应用程序,专门用于对图像进行裁剪操作。 在描述中提到的"可以拖动矩形框进行图片裁剪",这是Qt中的关键功能之一。Qt提供了丰富的图形视图...

    根据url和左上右下两点坐标裁剪图片并返回base64格式字符串

    根据url和图片左上右下两点坐标裁剪图片并返回base64格式字符串,java工具类,适用于人脸识别

Global site tag (gtag.js) - Google Analytics