博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于javax.imageio的图片缩放和图片剪裁
阅读量:4112 次
发布时间:2019-05-25

本文共 1937 字,大约阅读时间需要 6 分钟。

概述:

基于Sun自带lib进行图片的操作,此处主要展示图片的缩放和图片剪裁

实现:

图片缩放:

/** * 图片伸缩,不破坏图片 *  * @param srcFile 原图片路径 * @param dstFile 目标图片路径 * @param dstWidth 目标宽度 * @param dstHeight 目标高度 * @date 2013-11-1 */public static void scale(String srcFile, String dstFile, int dstWidth, int dstHeight) {	try {		ImageInputStream iis = ImageIO.createImageInputStream(new File(srcFile));		Iterator
iterator = ImageIO.getImageReaders(iis); ImageReader reader = (ImageReader) iterator.next(); reader.setInput(iis, true); BufferedImage source = reader.read(0); BufferedImage tag = new BufferedImage(dstWidth, dstHeight, source.getType()); tag.getGraphics().drawImage(source, 0, 0, dstWidth, dstHeight, null); File file = new File(dstFile); ImageIO.write(tag, reader.getFormatName(), file); } catch (Exception e) { e.printStackTrace(); }}

图片剪裁:

/** * 图片剪裁,基于起始坐标(x,y)和范围[widthRange,heightRange] *  * @param srcFile 原图片路径 * @param dstFile 目标图片路径 * @param x 起始X * @param y 起始Y * @param widthRange 范围width * @param heightRange 范围height * @date 2013-11-1 */public static void cut(String srcFile, String dstFile, int x, int y, int widthRange,	int heightRange) {	try {		ImageInputStream iis = ImageIO.createImageInputStream(new File(srcFile));		Iterator
iterator = ImageIO.getImageReaders(iis); ImageReader reader = (ImageReader) iterator.next(); reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam(); Rectangle rectangle = new Rectangle(x, y, widthRange, heightRange); param.setSourceRegion(rectangle); BufferedImage bi = reader.read(0, param); File file = new File(dstFile); ImageIO.write(bi, reader.getFormatName(), file); } catch (Exception e) { e.printStackTrace(); }}

测试:

public static void main(String[] args) {	String srcFile = "G:/1.jpg";	String dstFile = "G:/test.jpg";	int width = 120;	int height = 12000;	cut(srcFile, dstFile, 10, 10, width, height);	scale(srcFile, dstFile, width, height);}

 

评价:

效率很低

转载地址:http://qiqsi.baihongyu.com/

你可能感兴趣的文章
智能指针入门
查看>>
指针函数与函数指针
查看>>
enum 枚举类型
查看>>
不能重载的运算符(2019.10.23)
查看>>
C++中struct与class的区别
查看>>
C++数据存储区
查看>>
const与指针及初始化
查看>>
priority_queue 建立最小堆
查看>>
为什么快排比堆排快
查看>>
weak_ptr打破环状引用
查看>>
进程、线程比较
查看>>
线程、进程间的通信方式
查看>>
空结构体与空指针的大小
查看>>
洗牌算法
查看>>
bitmap海量数据
查看>>
预处理阶段
查看>>
模板与宏的区别(2019.10.22)
查看>>
TCP如何保证可靠传输
查看>>
静态链接、动态链接、静态重定位、动态重定位(2019.10.22)
查看>>
含有虚函数的空类的内存大小
查看>>