更新日期20150902
package com.jh.util;
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @desc生成图片缩略图
**/
@SuppressWarnings("restriction")
public class ImageThumbnailUtil {
public static void main(String[] args) {
String filename = "src/love.jpg";
String outFilename = "src/love_thumb.jpg";
try {
createThumbnail(filename, 390, 225, 100, outFilename);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void toThumbnail(String uploadPath,String fileName){
String uploadThumbPath =uploadPath+"/thumb/";
File file = new File(uploadThumbPath);
if (!file.isFile()) {
file.mkdirs();
}
System.out.println(uploadPath+fileName);
System.out.println(uploadThumbPath+fileName);
try {
createThumbnail(uploadPath+"/"+fileName, 390, 225, 100, uploadThumbPath+fileName);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void createThumbnail(String filename, int thumbWidth,int thumbHeight, int quality, String outFilename)
throws InterruptedException,FileNotFoundException, IOException {
// 加载图片文件
Image image = Toolkit.getDefaultToolkit().getImage(filename);
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
// 强制加载图像
mediaTracker.waitForID(0);
// 测试图片是否加载成功:
System.out.println(mediaTracker.isErrorAny());
// 通过参数判断缩略图大小
double thumbRatio = (double) thumbWidth / (double) thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
// 缩小
if (thumbRatio < imageRatio) {
thumbHeight = (int) (thumbWidth / imageRatio);
} else {// 放大
thumbWidth = (int) (thumbHeight * imageRatio);
}
// 创建缩略图对象 并设置quality
BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight,BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0,thumbWidth, thumbHeight, null);
// 输出缩略图
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...
6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...
Java 生成缩略图的方法示例 Java 生成缩略图是指使用 Java 语言生成缩略图的过程,这个过程中涉及到各种图形处理技巧。下面将详细介绍 Java 生成缩略图的方法示例。 图像处理基础 在 Java 中,图像处理是通过使用...
在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...
java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类
一个不错的工具类,上传的图片根据长宽的判断,按比例缩放生成另一张小图,可以减少浏览的浪费
在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...
首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在Java中使用ffmpeg,通常会通过调用系统命令或者使用第三方库如`Xuggle`或`ffmpeg-java`来实现。在...
这个jar包为开发者提供了一个方便的API来处理GIF图像的缩略图生成,使得在Java项目中实现这一功能变得更加简单。 GIF4J库的核心功能包括读取GIF文件、解析其帧信息、调整图像尺寸并重新组合成新的GIF文件。以下是...
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发等领域。这个主题涉及到如何利用Java的APIs来创建图片的缩小版本,以节省存储空间,提高页面加载速度,或者优化用户体验。...
"bianxiaotu"可能是用于生成缩略图的Java类或工具的名称,具体实现可能因项目而异,但核心思想与上述步骤一致。总的来说,这个任务结合了JSP页面交互、文件上传处理以及图像处理技术,是Web开发中的一个典型应用场景...
在实际应用中,你可能需要对整个PDF文档的所有页面生成缩略图,并将它们保存在一个集合或目录中,以便在用户界面中展示。同时,为了提高性能,可以考虑使用多线程处理多个PDF文件的缩略图生成。 总结来说,PDFBox...
在Java编程中,生成缩略图通常涉及到复杂的图像处理算法,包括图像重采样、比例调整、颜色空间转换等。thumbnailator库通过封装这些复杂操作,使得开发者只需要几行代码就能完成缩略图的创建。下面我们将深入探讨...
在Java编程环境中,生成缩略图是一项常见的任务,特别是在处理图像相关的应用中,例如网站、移动应用或桌面软件。这个“生成缩列图的java工具类”提供了方便的方法来创建和管理图片的缩略版本。这里我们将深入探讨...
thumbnailator(包括jar包跟api) java用于图片压缩 生成缩略图 添加水印等 这是我见过最好的压缩工具了 使用方法: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat(...
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像或者构建Web应用程序时。这个示例展示了如何根据一个URL抓取远程图像并将其转换为缩略图。下面将详细解释这段代码的工作原理和涉及的关键知识点。 首先...