package com.example.xmhi;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 Administrator
*
*/
public class TestCutImg {
private static String imgPath = "F:\\ohergal\\My Pictures\\时尚先生"; //文件路径
private static String imgName = "2007_11_20_14_04_27_66762_0_2.jpg"; //文件名
private static String outPath = "D:\\"; //输出路径
private static String outName = "test.jpg"; //输出文件名
/**
* 图片裁剪
*/
public void cut(){
try {
//获取源图片
FileInputStream is = new FileInputStream(imgPath+File.separator+imgName);
/*
* 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader
* 声称能够解码指定格式。 参数:formatName - 包含非正式格式名称 .
* 例如 "jpeg" 或 "tiff"等 。
*/
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
ImageInputStream 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 rect = new Rectangle(160, 100, 400, 481);
//提供一个 BufferedImage,将其用作解码像素数据的目标。
param.setSourceRegion(rect);
/*
* 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将
* 它作为一个完整的 BufferedImage 返回。
*/
BufferedImage bi = reader.read(0,param);
//保存新图片
ImageIO.write(bi, "jpg", new File(outPath+File.separator+outName));
} catch (FileNotFoundException e) {
System.out.println("找不到图片: "+imgPath+File.separator+imgName);
e.printStackTrace();
} catch (IOException e) {
System.out.println("获取图片输入流错误 :"+imgPath+File.separator+imgName);
e.printStackTrace();
}
}
/**
* 图片缩放测试
*/
public void reSize(){
try {
// 读入文件
BufferedImage src = ImageIO.read(new File(imgPath+File.separator+imgName));
int width = src.getWidth()/2; // 得到源图宽
int height = src.getHeight()/2; // 得到源图长
Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制缩小后的图
g.dispose();
ImageIO.write(tag, "JPEG", new File(outPath+File.separator+outName));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
TestCutImg tci = new TestCutImg();
//tci.cut();
tci.reSize();
}
}
转载自: http://www.throughsoul.com/archives/682.html
分享到:
相关推荐
接下来,我们来看看压缩包中的两个文件:ImgUtils.java和ImgUtils1.java。通常,这两个文件都可能包含类定义,其中ImgUtils可能是主要的图片处理工具类,而ImgUtils1可能是其扩展或者另一种实现方式。在这些类中,...
在Java编程语言中,图片裁剪是一项常见的图像处理任务,主要涉及到对图像的选取和截取,以便获得图像的一部分或按特定比例调整图像大小。Java提供了多种库和API来实现这个功能,使得开发者能够轻松地处理图像裁剪的...
在Java编程语言中,处理图像任务,如裁剪和缩放,是常见的需求。这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这...
在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....
【标题】"jsp+CropZoom+jquery+java 图片缩放裁剪" 是一个基于Web的图像处理系统,主要用于实现用户在上传头像时进行自由裁剪的功能。这个项目使用了JSP(JavaServer Pages)作为后端动态网页技术,CropZoom作为前端...
本文主要介绍了C#实现缩放和剪裁图片的方法,包括图片缩放和图片剪裁两方面的内容。通过实例形式,我们分析了C#针对图片属性的缩放、裁剪等相关操作技巧,旨在帮助读者更好地理解和应用C#中的图片处理技术。
4. **图片缩放** - **前端缩放**:使用CSS的`transform`属性,可以实现图片的缩放效果,但这仅限于视觉上的缩放,不会改变图片的实际大小。 - **后端缩放**:在服务器端,可以使用Java的图像处理库,如`ImageIO`或...
总的来说,Java提供了丰富的库来处理图像操作,包括剪裁、缩放和格式转换等。这个“java对图片进行操作.rar”工具类提供了一个基础的框架,开发者可以根据需求进一步扩展和优化。对于处理大量图像的任务,还可以考虑...
Java图像处理技术是Java开发中的一个重要领域,涵盖了多种操作,如添加水印、图像分割、裁剪和缩放。在本项目中,这些功能被整合到一个完整的程序中,并通过单元测试进行了验证,确保了各个功能的正确性。此外,程序...
不过在这个项目中,可能使用了更简单的库,如Imgscalr,它提供了简单的API来进行图片缩放和裁剪。裁剪操作通常包括设置裁剪区域的坐标和大小,然后使用`CropImageOp`类进行实际的裁剪操作。 4. 图片缩放: 缩放是...
综上所述,自定义裁剪和图片缩放功能涉及多个iOS开发的关键知识点,包括UIKit组件的使用、手势识别、图形上下文操作等。实现这样的功能不仅提高了应用的用户体验,也为用户提供更多个性化编辑的可能。在实际开发中,...
2. 图片缩放: 缩放功能可以通过设置`Image`控件的`Stretch`属性来实现。`Uniform`模式保持原图比例缩放,`Fill`模式则会填充整个控件区域。还可以添加滑块让用户自定义缩放比例。 3. 涂鸦: 涂鸦功能需要创建一个...
7. **配置参数**:在`PictureResize.java`程序中,很可能包含了配置图片缩放大小的参数,这样用户可以根据需求调整缩放比例。 总之,批量缩放图片的Java实现是一个结合了文件操作、图像处理和可能的并发编程的技术...
本知识点将详细介绍如何在Android中实现图片的移动和缩放裁剪。 首先,我们需要了解Android中处理图片的基础知识。Android提供了多种库和API来处理图像,例如Bitmap类用于表示位图图像,Matrix类则用于处理图像的...
通过使用Java语言和javacv库,我们可以快速获取视频文件中的帧图片,并对其进行等比缩放,以满足不同的应用需求。 知识点一:视频文件中的帧图片获取 * 视频文件中的帧图片获取是指从视频文件中抽取出每一帧图片的...
在Java编程中,图片处理是一项常见的任务,包括图片的上传、尺寸控制、宽高调整以及裁剪和保存等操作。这些功能在Web应用、图像处理软件或者数据分析项目中都有广泛的应用。下面我们将深入探讨如何使用Java实现这些...
在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...
1. **初始化参数**:`srcpath` 存储源图片的路径,`subpath` 存储裁剪后图片的保存路径,`x`, `y`, `width`, 和 `height` 分别表示裁剪的起始坐标和裁剪区域的宽高。 2. **打开文件输入流**:`FileInputStream` ...