`
supben
  • 浏览: 331078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

图片截取和缩略

阅读更多
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);
	}
}

分享到:
评论
5 楼 小小流浪猪 2010-11-21  
处理图片,最好还是用ImageMagic
4 楼 greatghoul 2010-11-21  
很不错的代码练习。
3 楼 whaosoft 2010-11-20  
这个网上很多的 说实话
2 楼 joygarden 2010-11-19  
曾经用java做图片切割 速度太慢
1 楼 181054867 2010-11-19  
Java做这个总有不足,不太放心

相关推荐

    漂亮强大图片截取缩略

    综上所述,"漂亮强大图片截取缩略"不仅涵盖了图片的获取和处理,还涉及到用户体验和性能优化等多个层面。在实际应用中,开发者需要结合具体需求,选择合适的方法和技术,确保图片处理既美观又高效。

    JS 按图片比例截取中间部分 缩略图不失真

    9. **响应式设计**:在响应式布局中,图片缩略图的大小可能随着屏幕尺寸变化,因此需要确保无论在什么设备上,都能正确地按比例截取和显示图片。 10. **安全性和隐私**:处理用户上传的图片时,要关注跨域问题和...

    ffmpeg截取视频缩略图

    截取视频缩略图的过程,本质上是将视频中的某一帧图片提取出来,通常为JPEG或PNG格式。这一过程可以通过FFmpeg的命令行参数实现。 命令的基本结构如下: ``` ffmpeg -i input_video.mp4 -vf "select='eq(n,expr)',...

    视频截取缩略图

    在JAVA中,我们通常会借助第三方库来完成视频截取缩略图的操作,因为JAVA标准库并没有直接提供这样的功能。以下是一些常用的JAVA视频处理库: 1. **Xuggler**:这是一个开源的JAVA库,能够处理多种音视频格式,包括...

    js php 截取缩略图

    "js php 截取缩略图"这个主题涉及到两个主要技术:JavaScript(js)和PHP,它们分别在前端和后端处理图像的截取与缩放。下面将详细阐述这两个技术在生成缩略图过程中的应用。 首先,JavaScript(JS)是客户端脚本...

    使用Javacv截取视频缩略图

    上传有大小限制,所以工程移除了lib,需要自己下载 javacv jar包下载地址:http://search.maven.org/remotecontent?filepath=org/bytedeco/javacv-platform/1.4.2/javacv-platform-1.4.2-bin.zip

    图片处理缩略图

    在截取缩略图时,我们需要创建一个新的`Bitmap`对象,然后使用`Graphics`对象从原始`Image`中绘制用户选择的矩形区域。 5. **Rectangle类**:`Rectangle`结构体用于表示二维矩形区域。它包含四个属性:`Left`、`Top...

    FCKEditor图片截取代码

    总结,FCKEditor图片截取代码是通过集成图像处理库和自定义上传逻辑实现的,允许用户上传并自定义生成的缩略图大小。这种功能提升了FCKEditor的易用性,同时也对网站的性能和用户体验起到了积极的作用。在实际应用中...

    mvc4 截取上传图片做头像,自动生成不同小尺寸缩略图

    2. 将上传的图片截取为需要的形状。 3. 创建不同尺寸的缩略图。 4. 保存裁剪后的图片和缩略图到服务器。 5. 更新数据库中的用户头像信息。 6. 在视图中提供上传界面和反馈信息。 通过以上步骤,我们可以构建一个...

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

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

    iOS视频缩略图截取.zip

    1. **创建`MPMoviePlayerController`对象**:首先,你需要创建一个`MPMoviePlayerController`实例,并指定你要截取缩略图的视频URL。 ```swift let videoURL = URL(fileURLWithPath: "path/to/your/video.mp4") let...

    C# (winform) 图片缩略图的显示与缩略图另行保存功能

    在C# WinForm应用开发中,处理图片是一项常见的任务...总之,C# WinForm提供了强大的图像处理能力,可以轻松实现图片缩略图的显示和保存。通过熟练掌握相关类库和方法,开发者可以构建出高效且用户体验良好的图像应用。

    jquery 截取图片 上传

    总结来说,通过结合jQuery的事件处理、Ajax通信,以及HTML5的Canvas和PHP的图像处理功能,我们可以实现一个用户友好的图片截取和上传功能。这个过程中需要注意安全性和用户体验的提升,以及跨浏览器兼容性的考虑。

    java视频生成图片(缩略图)-实例-(指定时间)

    在生成缩略图后,你可能需要使用JAI来调整图片的大小和格式。 4. **JavaFX:** 虽然JavaFX主要是用于构建桌面和网页应用的图形用户界面,但它也包含了一些处理媒体的类,可以用于视频播放和截图。通过`Media`和`...

    jcrop JavaScript图片截取工具

    **标题详解:** "jcrop JavaScript图片截取工具" 是一个基于JavaScript的开源库,用于在网页上实现图片的选择和裁剪功能。它无需依赖Flash技术,因此可以在各种现代浏览器和移动设备上运行,提供了良好的跨平台兼容...

    discuz 截取头像

    UCFlash通常是指Discuz的UCenter Flash组件,它可能包含了头像上传和处理的相关接口,比如JavaScript或者ActionScript代码,这些代码负责与服务器交互,完成图片的上传、截取和缩略操作。 实现头像截取和缩略的过程...

    图片的压缩截取和目录遍历.rar

    在实际应用中,结合图片压缩和截取技术,我们可以实现快速分享大图、批量处理图片、自动化生成缩略图等功能;而目录遍历则能帮助我们自动化处理大量文件,如批量重命名、备份、清理冗余图片等。这些都是IT从业者必备...

    采用canvas截取上传视频的图片

    为了提供用户友好的体验,有时我们需要从上传的视频中提取一张图片作为预览或缩略图。在这种情况下,`canvas`元素就派上了用场。`canvas`是HTML5引入的一个强大的绘图工具,允许开发者动态地在网页上绘制图形、图像...

Global site tag (gtag.js) - Google Analytics