`

图片的切割和缩略

    博客分类:
  • Java
阅读更多
package com.supben.util;

import java.awt.Dimension;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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;

import org.apache.log4j.Logger;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImageUtil {
	private static final Logger log = Logger.getLogger(ImageUtil.class);
	
	/**
	 * 切割图片
	 * @param x 截点横坐标 (从左开始计数)
	 * @param y 截点纵坐标 (从上开始计数)
	 * @param width 截取的宽度
	 * @param height 截取的长度
	 * @param oldpath 图片位置
	 * @param newpath 新生成的图片位置
	 */
	public static void cutImage(int x, int y, int width, int height, String oldpath, String newpath) {

		FileInputStream is = null;
		ImageInputStream iis = null;
		
		//这个是获取图片扩展名的方法,比如:jpg。我这里有现成的,如果没有,自己实现
		String imgType = StringUtil.getExt(oldpath);

		try {
			is = new FileInputStream(oldpath);
			Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(imgType);
			ImageReader reader = it.next();
			iis = ImageIO.createImageInputStream(is);
			reader.setInput(iis, true);
			ImageReadParam param = reader.getDefaultReadParam();
			Point p = new Point();
			p.setLocation(x, y);

			Dimension d = new Dimension();
			d.setSize(width, height);
			Rectangle rect = new Rectangle(p, d);
			param.setSourceRegion(rect);

			BufferedImage bi = reader.read(0, param);
			ImageIO.write(bi, imgType, new File(newpath));

			is.close();
			iis.close();
		} catch (Exception e) {
			log.error(e);
		}
	}
	
	/**
	 * 缩略图片
	 * @param oldpath 原图片
	 * @param newpath 新生成的图片存放地址
	 * @param wdith   缩略后的宽
	 * @param height  缩略后的高
	 */
	public static void scaleImage(String oldpath, String newpath, int wdith, int height) {
		// 获取老的图片
		File oldimg = new File(oldpath);

		try {
			BufferedImage bi = ImageIO.read(oldimg);
			Image Itemp = bi.getScaledInstance(wdith, height, BufferedImage.SCALE_SMOOTH);
			BufferedImage thumbnail = new BufferedImage(wdith, height, BufferedImage.TYPE_INT_RGB);
			thumbnail.getGraphics().drawImage(Itemp, 0, 0, null);

			// 缩略后的图片路径
			File newimg = new File(newpath);
			FileOutputStream out = new FileOutputStream(newimg);

			// 绘图
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbnail);
			param.setQuality(1.0f, false);
			encoder.encode(thumbnail);
			out.close();
			bi.flush();
			bi = null;
		} catch (IOException e) {
			log.error(e);
		}

	}
	
	
	

	public static void main(String[] args) {
		scaleImage("D:/2.jpg", "D:/3.jpg", 50, 50);
	}
}

 

分享到:
评论

相关推荐

    C#图片切割、图片压缩、缩略图生成代码汇总

    本文为大家整理了C#图片切割、图片压缩、缩略图生成的实现代码,大家可以收藏,方便以后使用,具体内容如下 /// 图片切割函数 /// /// 原始图片文件 /// 在X轴上的切割数量 /// 在Y轴上的切割数量 /// 质量...

    thinkphp3.2.x新增图片上传缩略图裁剪类

    调用方式很简单 get_sc($cover_id,[$width=180,$...@param $cut 是否切割 默认不切割___ 直接返回新图片的url 可以替换get_cover($cover_id,'path'); get_cover里做了简单的默认图片判断,大家可以自己改一下。

    jQuery缩略图生成插件web应用

    家在网站开发和web应用中常常需要处理图片,因为用户上传的图片往往尺寸大小各不相同,如何能够生成统一尺寸的缩略图往往是让我们头疼的问题,常规的方式基本都是使用后台程序PHP,JSP等处理上传后的图片,针对网站...

    AspJpeg安装使用方法_AspJpeg图片缩略_图片水印

    aspjpeg是一款非常强大的图片处理组件这里的技术主要包括: AspJpeg图片缩略,AspJpeg图片水印,AspJpeg安全码技术,AspJpeg图片切割,AspJpeg图片合并 等

    java处理图片,缩略图,添加水印,格式转换,Thumbnailator

    用java技术处理图片,生成缩略图,添加水印,切割裁剪图片,格式转换

    图片切割,截取图片的某一份为头像功能(Asp.net C# 2.0)

    程序可用来图片上传中,切割关键的部分上传。 可放大缩小原图功能,切割原图为缩略图功能。应用上可以自己根据要求创意。 jquery+asp.net(C#) 开发 .net 2.0

    java头像剪上传剪切设置大小,生成固定缩略图大小

    java头像剪上传剪切设置大小,生成固定缩略图大小,支持图像切割,图像缩放,图像格式转换等,图像缩放后图片太大变成图片过小失真问题暂未解决

    jQuery切割过渡效果图像滑块.zip

    jQuery切割过渡效果图像滑块是一款带左右箭头跟缩略图的图像滑块切割幻灯片特效。

    AspJpeg组件 AspJpeg1.801

     AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术  ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。

    用于iis服务器图片处理aspjpeg

    不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括: 图片...

    aspjpeg32位带安装码

    AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术 ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。 32位sn:48958-...

    aspjpeg 2.0 组件及注册码

     AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术  ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。  安装SN:...

    aspjpeg组件高级使用方法介绍

    不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文章却是不多,即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。 这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括: ...

    ASPjpeg全兼容特别破解版

    轻松对上传的照片生成图片缩略图、生成图片水印、进行图片合并、图片切割、创建安全码、支援数据库等等功能,正因为它处理图片的功能,在网站服务器得到广泛应用,可以说现在基本上所有的虚拟主机(空间)都默认带有...

    aspjpeg2.6破解版,带注册机

    AspJpeg组件2.6版包括注册机,请运行“AspJpeg 注册机.exe”生成AspJpeg注册机使用。 AspJpeg组件是一款功能强大的...AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术

    AspJpeg v2.4.0.1.zip

    AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术 ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。 功能摘要:...

    aspjpeg的下载和注册码

     AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术  ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。  安装SN:...

    PHP图片上传类,目录自动分割、等比例缩略图

    本程序主要是上传图片,然后可以按比例自动生成缩略图,官方网页有更多详细的使用实例,欢迎下载使用。通过表单上传后,可在按日期自动生成的文件夹中找到上传的文件,以及自动按比例生成的缩略图文件。

    PuzzleGame.zip

    页面载入完成,即可选择游戏等级和图片,进行拼图。页面加载完成,需要初始化绘图环境和画布尺寸及参考图片。 点击工具条上的缩略图,可以改变右侧参考图片。 点击游戏等级,切割图片完成,并且预留一张空白图片,...

Global site tag (gtag.js) - Google Analytics