`
coder_xpf
  • 浏览: 9803 次
社区版块
存档分类
最新评论

图片裁剪与缩放

阅读更多
package test;

import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class ImageHelper {
	/*
	 * 根据尺寸图片居中裁剪
	 */
	public static void cutCenterImage(String inputPath, String outputPath, int width, int height) throws IOException {
		Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");
		ImageReader reader = (ImageReader) iterator.next();
		InputStream in = new FileInputStream(inputPath);
		ImageInputStream iis = ImageIO.createImageInputStream(in);
		reader.setInput(iis, true);
		ImageReadParam param = reader.getDefaultReadParam();
		int imageIndex = 0;
		Rectangle rect = new Rectangle(
				(reader.getWidth(imageIndex) - width) / 2,
				(reader.getHeight(imageIndex) - height) / 2, width, height);
		param.setSourceRegion(rect);
		BufferedImage bi = reader.read(0, param);
		ImageIO.write(bi, "jpg", new File(outputPath));

	}

	/*
	 * 图片裁剪二分之一
	 */
	public static void cutHalfImage(String inputPath, String outputPath) throws IOException {
		Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");
		ImageReader reader = (ImageReader) iterator.next();
		InputStream in = new FileInputStream(inputPath);
		ImageInputStream iis = ImageIO.createImageInputStream(in);
		reader.setInput(iis, true);
		ImageReadParam param = reader.getDefaultReadParam();
		int imageIndex = 0;
		int width = reader.getWidth(imageIndex) / 2;
		int height = reader.getHeight(imageIndex) / 2;
		Rectangle rect = new Rectangle(width / 2, height / 2, width, height);
		param.setSourceRegion(rect);
		BufferedImage bi = reader.read(0, param);
		ImageIO.write(bi, "jpg", new File(outputPath));
	}

	/*
	 * 图片裁剪通用接口
	 */

	public static void cutImage(String inputPath, String outputPath, int x, int y, int width, int height) throws IOException {
		Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");
		ImageReader reader = (ImageReader) iterator.next();
		InputStream in = new FileInputStream(inputPath);
		ImageInputStream iis = ImageIO.createImageInputStream(in);
		reader.setInput(iis, true);
		ImageReadParam param = reader.getDefaultReadParam();
		Rectangle rect = new Rectangle(x, y, width, height);
		param.setSourceRegion(rect);
		BufferedImage bi = reader.read(0, param);
		ImageIO.write(bi, "jpg", new File(outputPath));

	}

	/*
	 * 图片缩放固定尺寸
	 */
	public static void zoomImage(String inputPath, String outputPath, int width, int height) throws Exception {
		double wr = 0, hr = 0;
		File srcFile = new File(inputPath);
		File destFile = new File(outputPath);
		BufferedImage bufImg = ImageIO.read(srcFile);
		Image Itemp = bufImg.getScaledInstance(width, height,
				bufImg.SCALE_SMOOTH);
		wr = width * 1.0 / bufImg.getWidth();
		hr = height * 1.0 / bufImg.getHeight();
		AffineTransformOp ato = new AffineTransformOp(
				AffineTransform.getScaleInstance(wr, hr), null);
		Itemp = ato.filter(bufImg, null);
		try {
			ImageIO.write((BufferedImage) Itemp,
					outputPath.substring(outputPath.lastIndexOf(".") + 1),
					destFile);
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}
	
	/*
	 * 图片缩放多少倍
	 */
	public static void zoomImage(String inputPath, String outputPath, double times) throws Exception {
		File srcFile = new File(inputPath);
		File destFile = new File(outputPath);
		BufferedImage bufImg = ImageIO.read(srcFile);
		int width = (int) (bufImg.getWidth()*times);
		int height = (int) (bufImg.getHeight()*times);
		Image Itemp = bufImg.getScaledInstance(width, height, bufImg.SCALE_SMOOTH);
		AffineTransformOp ato = new AffineTransformOp(
				AffineTransform.getScaleInstance(times, times), null);
		Itemp = ato.filter(bufImg, null);
		try {
			ImageIO.write((BufferedImage) Itemp,
					outputPath.substring(outputPath.lastIndexOf(".") + 1),
					destFile);
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}
}

 

分享到:
评论

相关推荐

    C#图片裁剪与缩放最简单的写法

    根据提供的标题、描述、标签及部分代码内容,我们可以总结出以下关于C#中图片裁剪与缩放的相关知识点。 ### C#中的图片处理基础 在C#中进行图片处理通常涉及使用`System.Drawing`命名空间下的类库。该库提供了丰富...

    PHP图片裁剪与缩放示例(无损裁剪图片)

    首先,为了实现图片裁剪与缩放的功能,需要判断图片的类型。这可以通过使用`exif_imagetype()`函数来完成。该函数能够识别图片的格式,从而确保后续操作针对正确的图片类型进行处理。在代码示例中,支持的图片类型...

    cropper图片裁剪缩放

    【cropper图片裁剪缩放】插件是用于在网页中实现图片裁剪与缩放功能的一款基于jQuery的工具。这个插件不仅提供了基本的图片裁剪操作,还经过优化,支持图片上传后的压缩功能,以及裁剪结果的后端处理,使得前端与...

    图片裁剪、缩放工具类

    在这个场景下,我们关注的是一个专门用于图片裁剪和缩放的工具类。标题为“图片裁剪、缩放工具类”,表明这是一个Java编程语言实现的实用程序,能够帮助开发者便捷地对图片进行操作。 在描述中提到,“两种方式”...

    Android图片裁剪----移动、缩放图片进行裁剪

    在Android开发中,图片裁剪是一项常见的功能,广泛应用于各种应用程序,如社交应用中的头像设置、拍照应用的编辑功能等。本知识点将详细介绍如何在Android中实现图片的移动和缩放裁剪。 首先,我们需要了解Android...

    iOS 图片裁剪 自定义大小 图片可缩放

    本文将深入探讨如何实现自定义尺寸的图片裁剪功能,并且支持图片的手动缩放,适用于iOS 6.0及以上版本。我们将主要关注以下几个关键知识点: 1. **UIImage**:UIImage是苹果iOS SDK中用于处理图像的核心类。它负责...

    android 图片裁剪

    本文将深入探讨如何在Android中实现通过调用系统相册和拍照来实现图片裁剪与缩放的功能。 首先,我们需要了解Android中的权限管理。在Android 6.0(API级别23)及以上版本,用户需要在运行时动态申请`READ_EXTERNAL...

    C# WPF实现的图片处理小工具,可进行图片裁剪、缩放、涂鸦、旋转、查看图片信息、保存

    这个工具集成了多种功能,包括图片裁剪、缩放、涂鸦、旋转以及查看和保存图片信息。我们将讨论每个功能的关键技术和实现方法。 首先,我们需要了解WPF的基本概念。WPF是.NET Framework的一部分,用于构建具有丰富...

    图片裁剪,缩放,转换格式等小工具,含源代码

    本文将深入探讨使用C#语言进行图片裁剪、缩放和转换格式的技术细节,以及这些功能的实现方式。 首先,C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台的软件开发,包括桌面应用和Web应用。对于...

    使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放

    "使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放" 在互联网快速发展的今天,图片数量的增长对网站的性能和用户体验产生了很大的影响。为了解决图片数量的增长带来的问题,我们需要实现图片的自动裁剪和缩放,...

    使用HTML5 canvas 标签进行图片裁剪、旋转、缩放示例代码

    在这个示例中,我们将深入探讨如何利用canvas进行图片的裁剪、旋转和缩放操作。 首先,我们需要在HTML文件中创建一个canvas元素,并通过JavaScript获取到这个元素的2D渲染上下文。在HTML部分,可以这样设置: ```...

    jsp+CropZoom+jquery+java 图片缩放裁剪

    【标签】"图片裁剪"、"头像上传裁剪"、"头像裁剪" 明确了这个项目的核心功能,即提供一种简便的方式来裁剪上传的头像图片。在实际应用中,这种功能可以提高用户体验,因为用户可以根据自己的需求调整头像的显示部分...

    可缩放jQuery图片裁剪插件.zip

    【可缩放jQuery图片裁剪插件】是一个用于网页图像编辑的工具,它基于流行的JavaScript库jQuery构建。这款插件提供了丰富的功能,使得用户在网页上可以自由地裁剪、旋转和调整图片尺寸,从而满足各种图像处理需求。在...

    图片缩放图片缩放

    2. 图片裁剪:除了缩放,Authorware还提供了裁剪功能,可以在不改变图片实际大小的情况下,调整显示部分。在“图片”属性窗口中,设置裁剪区域的坐标即可。 3. 图片质量:缩放过程中可能会涉及到图片质量的调整。在...

    Tengine+Lua+GM实现图片自动裁剪缩放

    随着互联网的快速发展,针对互联网开发的电商项目越来越来多,比如...而此资源就是教你如何实现以上的图片自动裁剪缩放功能,感兴趣的小伙伴可以下载研究一下。文件包含所需各种tar包,以及各种实验素材,简单易操作。

    上传图片缩放裁剪(js)简单易用

    3. 图片裁剪:同样利用`canvas`,可以绘制图片的一个矩形区域,然后使用`toDataURL()`方法导出该区域为新的图片数据。用户可以通过鼠标选择裁剪区域,裁剪操作完成后,更新`canvas`上的绘制区域。 4. PHP图片处理:...

    java裁剪、缩放图片工具类

    这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...

    PHP图片的裁剪与缩放

    图片太大且规格不统一,显示的控制需要靠JavaScript来完成,用在移动设备上时显示效果不好且流量巨大,需要对现有图片库的图片进行一次处理,生成符合移动设备用的缩略图,将原来客户端JS做的工作转移到服务器端用...

    C#图片处理基本应用(裁剪,缩放,清晰度,水印)

    本文将深入探讨如何使用C#进行图片的基本处理,包括裁剪、缩放、调整清晰度以及添加水印,这些都是在图像处理中常见的需求。 ### 一、裁剪图像 裁剪是图片处理中最基础的操作之一,主要用于去除图像边缘或特定区域...

Global site tag (gtag.js) - Google Analytics