`

图片的切割和缩略

    博客分类:
  • 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里做了简单的默认图片判断,大家可以自己改一下。

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

    除了图片缩略和水印外,ASPJPEG还支持图片的切割和合并。这在制作拼图效果、分页展示大图等方面非常有用。由于篇幅限制,这里仅给出一个简单的图片切割示例: ```vbscript ' 创建组件实例 Set Jpeg = Server....

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

    总结来说,"图片切割,截取图片的某一份为头像功能(Asp.net C# 2.0)"是一个结合了前端jQuery交互和后端Asp.net C#图片处理技术的项目,实现了用户自定义选择图片部分并生成头像的功能。它不仅展示了Web开发中的...

    功能爆好的图片上传 裁剪 切割控件 真的很牛叉

    再者,图片切割功能则更加专注于细分图像。不同于裁剪,切割可能更侧重于将一张图片分割成多个部分,这对于创建拼贴画、分块加载大图或者提取图片的特定区域非常有用。用户应能指定切割的大小和位置,同时保持切割后...

    【JavaScript源代码】js实现图片切割功能.docx

    在JavaScript中实现图片切割功能是一项常见的任务,尤其是在网页开发中,比如用于图像拼接、缩略图生成或者图像处理应用。以下是一个简单的实例,展示了如何使用JavaScript和HTML CSS来完成这个功能。 首先,HTML...

    有缩略图的相册代码

    在网页设计中,创建一个具有缩略图的相册是一种常见的需求,这可以提升用户体验,让用户更方便地浏览和选择图片。"有缩略图的jQuery相册代码"是一个实现这一功能的解决方案,它利用了JavaScript库jQuery的强大功能,...

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

    综上所述,"jQuery切割过渡效果图像滑块"是一个集成了动态切割过渡、用户导航和缩略图预览功能的JavaScript图像展示组件。它利用jQuery的强大功能和灵活性,创造出引人入胜的视觉效果,为网页增加了互动性和吸引力。...

    头像压缩切割上传

    这个过程涉及到几个关键技术点,包括图片压缩、图片切割和文件上传。以下是对这些技术的详细说明: 1. **图片压缩**:图片压缩的主要目的是减小文件大小,以便更快地传输和存储。常见的图片压缩算法有JPEG、PNG和...

    jQuery缩略图生成插件web应用

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

    图像切割算法

    在Java编程语言中,我们可以利用Java AWT和Swing库来实现图像切割功能。 在给出的代码中,`ChenWin504` 是一个继承自 `JApplet` 的类,用于展示图像切割算法的实现。以下是对关键部分的详细解释: 1. **初始化图像...

    图片分割C#源码

    这些库提供了丰富的API,用于读取、操作和保存图像,其中包括图片的切割和分割功能。 在给定的描述中,“讲大图按照自定义尺寸分割成小图”是指程序能够接受用户输入的尺寸参数,然后将大图按这些尺寸切割成多张小...

    .net图片处理

    2. 图片切割:图片切割是将一张图片分割成多个部分,通常用于创建缩略图、提取特定区域或分块传输大图。在C#中,可以使用Bitmap类的Clone方法来切割图片。首先,定义一个矩形区域,该区域表示要切割的部分,然后调用...

    java实现上传图片进行切割的方法

    处理图片切割的关键在于使用Java的图像处理API,如Java Advanced Imaging (JAI) 或 Java 2D API。在这个例子中,我们使用了`javax.imageio.ImageIO`来读取和处理图片。以下是一个基本的图片切割步骤: 1. **读取...

    AspJpeg组件 AspJpeg1.801

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

    用于iis服务器图片处理aspjpeg

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

    JQuery 图片剪切分割上传 - ImageCropper

    - 在实际项目中,需要结合服务器端的代码处理上传的图片,例如存储图片、生成缩略图等。 总的来说,jQuery 图片剪切与分割上传插件 ImageCropper 提供了一个高效、易用的解决方案,让开发者能够在网页中实现复杂的...

    Python四等分图片切割源码,一张图片,切成四张相等的图片的源码

    这个特定的项目提供了一段源码,用于将一张图片分割成四等份的子图片,这对于创建拼贴图、预览缩略图或者进行其他图像处理操作非常有用。下面我们将深入探讨这段代码涉及的知识点。 首先,我们需要使用Python中的...

    aspjpeg32位带安装码

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

Global site tag (gtag.js) - Google Analytics