`

java 大图生成缩略图

    博客分类:
  • java
阅读更多
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;

/**
 * 
 * <p>
 * Title: PicReduce
 * </p>
 * 
 * <p>
 * Description: 图片尺寸缩小
 * </p>
 * 
 * <p>
 * Copyright: Copyright (c)
 * </p>
 * 
 * <p>
 * Company:
 * </p>
 * 
 * @Modified Linc
 * @version 1.0
 */
public class ChangeImg {
	private String srcFile;//源始文件名

	private String destFile;//缩图文件名

	private int width;

	private int height;

	private Image img;

	private String destFilePath;// 如果需要保存目标文件到其他目录时需要

	// 样例:
	public static void main(String[] args) throws Exception {
		ChangeImg chgImg = new ChangeImg("E:\\struts2学习资料\\testZIP\\sdf\\a6.jpg");
		chgImg.resizeFix(300, 180);
	}

	/**
	 * 构造函数
	 * 
	 * @param fileName
	 *            String
	 * @throws IOException
	 *             构造函数参数 源文件(图片)的路径
	 */
	public ChangeImg(String fileName) throws IOException {
		File _file = new File(fileName); // 读入文件
		this.srcFile = _file.getName();
		this.destFile = this.srcFile
				.substring(0, this.srcFile.lastIndexOf("."))
				+ "_s.jpg";// 生成文件命名为原文件名 + "_s"
		int length = fileName.lastIndexOf("\\");
		destFilePath = fileName.substring(0, length + 1);

		img = javax.imageio.ImageIO.read(_file); // 构造Image对象
		width = img.getWidth(null); // 得到源图宽
		height = img.getHeight(null); // 得到源图长

	}

	/**
	 * 强制压缩/放大图片到固定的大小
	 * 
	 * @param w
	 *            int 新宽度
	 * @param h
	 *            int 新高度
	 * @throws IOException
	 */
	public void resize(int w, int h) throws IOException {
		BufferedImage _image = new BufferedImage(w, h,
				BufferedImage.TYPE_INT_RGB);
		_image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图
		if ((!(this.destFilePath == null)) && !"".equals(destFilePath)) {
			FileOutputStream out = new FileOutputStream(this.destFilePath
					+ destFile); // 输出到文件流
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(_image); // 近JPEG编码
			out.close();
		} else {
			throw new IOException("必须设置要保存的目标文件的路径");
		}
	}

	/**
	 * 按照固定的比例缩放图片
	 * 
	 * @param t
	 *            double 比例
	 * @throws IOException
	 */
	public void resize(double t) throws IOException {
		int w = (int) (width * t);
		int h = (int) (height * t);
		resize(w, h);
	}

	/**
	 * 以宽度为基准,等比例放缩图片
	 * 
	 * @param w
	 *            int 新宽度
	 * @throws IOException
	 */
	public void resizeByWidth(int w) throws IOException {
		int h = (int) (height * w / width);
		resize(w, h);
	}

	/**
	 * 以高度为基准,等比例缩放图片
	 * 
	 * @param h
	 *            int 新高度
	 * @throws IOException
	 */
	public void resizeByHeight(int h) throws IOException {
		int w = (int) (width * h / height);
		resize(w, h);
	}

	/**
	 * 按照最大高度限制,生成最大的等比例缩略图
	 * 
	 * @param w
	 *            int 最大宽度
	 * @param h
	 *            int 最大高度
	 * @throws IOException
	 */
	public void resizeFix(int w, int h) throws IOException {
		if (width / height > w / h) {
			resizeByWidth(w);
		} else {
			resizeByHeight(h);
		}
	}

	/**
	 * 设置目标文件名 setDestFile
	 * 
	 * @param fileName
	 *            String 文件名字符串
	 */
	public void setDestFile(String fileName) throws Exception {
		if (!fileName.endsWith(".jpg")) {
			throw new Exception("目标文件必须是 \".jpg\".类型");
		}
		destFile = fileName;
	}

	/**
	 * 获取目标文件名 getDestFile
	 */
	public String getDestFile() {
		return destFile;
	}

	/**
	 * 获取图片原始宽度 getSrcWidth
	 */
	public int getSrcWidth() {
		return width;
	}

	/**
	 * 获取图片原始高度 getSrcHeight
	 */
	public int getSrcHeight() {
		return height;
	}

	public void setDestFilePath(String destFilePath) {
		this.destFilePath = destFilePath;
	}
}

分享到:
评论

相关推荐

    java大图生成缩略图。。。。

    java大图生成缩略图。。。。。。。。。。。。

    java 上传图片生成缩略图

    ### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...

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

    6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...

    java生成图片缩略图和二进制文件的工具类

    将图片生成缩略图和转换为二进制的工具类,缩略图大小可调

    java批量上传图片并生成缩略图

    在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...

    基于Springmvc的上传图片并生成缩略图

    生成缩略图通常可以借助于图像处理库,如Java的`javax.imageio.ImageIO`或第三方库如Apache Commons Imaging。以下是一个简单的示例: ```java try { BufferedImage originalImage = ImageIO.read(file....

    java生成缩略图

    根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...

    JAVA获取视频缩略图

    在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...

    java 生成缩略图

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...

    JSP上传图片并生成缩略图

    在这个特定的场景中,"JSP上传图片并生成缩略图"是一个常见的功能需求,尤其是在开发包含用户交互和多媒体内容的Web应用时。下面我们将详细探讨这一技术实现的关键知识点。 首先,**上传组件**是Web应用中用于接收...

    jsp上传图片并生成缩略图

    在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...

    struts2图片上传并生成缩略图,展示缩略图点击显示大图

    假设我们使用Java自带的ImageIO,可以编写一个函数来生成缩略图: ```java private BufferedImage generateThumbnail(BufferedImage sourceImage, int maxWidth, int maxHeight) { double scaleWidth = (double) ...

    Java将web页生成缩略图

    在实际开发中,你可能需要根据自己的需求调整代码,比如增加错误处理,或者将生成缩略图的功能封装成一个服务,供其他部分调用。 总结起来,Java结合PhantomJS可以方便地实现网页缩略图的生成。通过WebDriver接口,...

    java生成缩略图.pdf

    在Java中生成缩略图是一项常见的任务,尤其是在开发Web应用或者需要处理用户上传图片的系统中。这个过程涉及对原始图像进行重新尺寸调整,以创建一个较小的版本,通常用于预览或节省存储空间。在提供的代码片段中,...

    java利用ffmpeg获取视频缩略图

    首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在Java中使用ffmpeg,通常会通过调用系统命令或者使用第三方库如`Xuggle`或`ffmpeg-java`来实现。在...

    Java中gif动图缩略图处理jar包

    这个jar包为开发者提供了一个方便的API来处理GIF图像的缩略图生成,使得在Java项目中实现这一功能变得更加简单。 GIF4J库的核心功能包括读取GIF文件、解析其帧信息、调整图像尺寸并重新组合成新的GIF文件。以下是...

    jSP上传图片生成缩略图

    "bianxiaotu"可能是用于生成缩略图的Java类或工具的名称,具体实现可能因项目而异,但核心思想与上述步骤一致。总的来说,这个任务结合了JSP页面交互、文件上传处理以及图像处理技术,是Web开发中的一个典型应用场景...

    动态缩略图实现方案

    总的来说,Java提供了强大的图像处理能力,使得在服务器端动态生成缩略图成为可能。通过熟练掌握Java 2D API和其他相关库,开发者可以构建高效、灵活的动态缩略图系统,满足各种应用场景的需求。

    java生成缩略图.zip

    在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...

    java 缩略图实现

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发等领域。这个主题涉及到如何利用Java的APIs来创建图片的缩小版本,以节省存储空间,提高页面加载速度,或者优化用户体验。...

Global site tag (gtag.js) - Google Analytics