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#中进行图片处理通常涉及使用`System.Drawing`命名空间下的类库。该库提供了丰富...
首先,为了实现图片裁剪与缩放的功能,需要判断图片的类型。这可以通过使用`exif_imagetype()`函数来完成。该函数能够识别图片的格式,从而确保后续操作针对正确的图片类型进行处理。在代码示例中,支持的图片类型...
【cropper图片裁剪缩放】插件是用于在网页中实现图片裁剪与缩放功能的一款基于jQuery的工具。这个插件不仅提供了基本的图片裁剪操作,还经过优化,支持图片上传后的压缩功能,以及裁剪结果的后端处理,使得前端与...
在这个场景下,我们关注的是一个专门用于图片裁剪和缩放的工具类。标题为“图片裁剪、缩放工具类”,表明这是一个Java编程语言实现的实用程序,能够帮助开发者便捷地对图片进行操作。 在描述中提到,“两种方式”...
本文将深入探讨如何实现自定义尺寸的图片裁剪功能,并且支持图片的手动缩放,适用于iOS 6.0及以上版本。我们将主要关注以下几个关键知识点: 1. **UIImage**:UIImage是苹果iOS SDK中用于处理图像的核心类。它负责...
在Android开发中,图片裁剪是一项常见的功能,广泛应用于各种应用程序,如社交应用中的头像设置、拍照应用的编辑功能等。本知识点将详细介绍如何在Android中实现图片的移动和缩放裁剪。 首先,我们需要了解Android...
这个工具集成了多种功能,包括图片裁剪、缩放、涂鸦、旋转以及查看和保存图片信息。我们将讨论每个功能的关键技术和实现方法。 首先,我们需要了解WPF的基本概念。WPF是.NET Framework的一部分,用于构建具有丰富...
本文将深入探讨如何在Android中实现通过调用系统相册和拍照来实现图片裁剪与缩放的功能。 首先,我们需要了解Android中的权限管理。在Android 6.0(API级别23)及以上版本,用户需要在运行时动态申请`READ_EXTERNAL...
本文将深入探讨使用C#语言进行图片裁剪、缩放和转换格式的技术细节,以及这些功能的实现方式。 首先,C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台的软件开发,包括桌面应用和Web应用。对于...
"使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放" 在互联网快速发展的今天,图片数量的增长对网站的性能和用户体验产生了很大的影响。为了解决图片数量的增长带来的问题,我们需要实现图片的自动裁剪和缩放,...
在这个示例中,我们将深入探讨如何利用canvas进行图片的裁剪、旋转和缩放操作。 首先,我们需要在HTML文件中创建一个canvas元素,并通过JavaScript获取到这个元素的2D渲染上下文。在HTML部分,可以这样设置: ```...
【标签】"图片裁剪"、"头像上传裁剪"、"头像裁剪" 明确了这个项目的核心功能,即提供一种简便的方式来裁剪上传的头像图片。在实际应用中,这种功能可以提高用户体验,因为用户可以根据自己的需求调整头像的显示部分...
【可缩放jQuery图片裁剪插件】是一个用于网页图像编辑的工具,它基于流行的JavaScript库jQuery构建。这款插件提供了丰富的功能,使得用户在网页上可以自由地裁剪、旋转和调整图片尺寸,从而满足各种图像处理需求。在...
本文主要介绍了C#实现缩放和剪裁图片的方法,结合实例形式分析了C#针对图片属性的缩放、裁剪等相关操作技巧。 图片缩放 图片缩放是指将原始图片按照一定的比例或尺寸进行缩放,以适应不同的显示需求。在C#中,可以...
随着互联网的快速发展,针对互联网开发的电商项目越来越来多,比如...而此资源就是教你如何实现以上的图片自动裁剪缩放功能,感兴趣的小伙伴可以下载研究一下。文件包含所需各种tar包,以及各种实验素材,简单易操作。
3. 图片裁剪:同样利用`canvas`,可以绘制图片的一个矩形区域,然后使用`toDataURL()`方法导出该区域为新的图片数据。用户可以通过鼠标选择裁剪区域,裁剪操作完成后,更新`canvas`上的绘制区域。 4. PHP图片处理:...
这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...
图片太大且规格不统一,显示的控制需要靠JavaScript来完成,用在移动设备上时显示效果不好且流量巨大,需要对现有图片库的图片进行一次处理,生成符合移动设备用的缩略图,将原来客户端JS做的工作转移到服务器端用...
许多图片裁剪插件还支持高级特性,如旋转、缩放、镜像、拖拽等。同时,可以通过API自定义UI、设置裁剪限制、处理多张图片等,以满足各种复杂场景的需求。 综上所述,基于jQuery的图片裁剪插件通过结合HTML5的Canvas...