import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
*
* 工具类 Copyright (c) 2008 by MTA.
*
*/
public class ImageUtils {
/**
* 创建缩略图
*
* @param file
* 上传的文件流
* @param height
* 最小的尺寸
* @throws IOException
*/
public static void createMiniPic(File file, float width, float height,String newImgName)
throws IOException {
Image src = javax.imageio.ImageIO.read(file); // 构造Image对象
int old_w = src.getWidth(null); // 得到源图宽
int old_h = src.getHeight(null);
int new_w = 0;
int new_h = 0; // 得到源图长
float tempdouble;
if (old_w >= old_h) {
tempdouble = old_w / width;
} else {
tempdouble = old_h / height;
}
if (old_w >= width || old_h >= height) { // 如果文件小于锁略图的尺寸则复制即可
new_w = Math.round(old_w / tempdouble);
new_h = Math.round(old_h / tempdouble);// 计算新图长宽
while (new_w > width && new_h > height) {
if (new_w > width) {
tempdouble = new_w / width;
new_w = Math.round(new_w / tempdouble);
new_h = Math.round(new_h / tempdouble);
}
if (new_h > height) {
tempdouble = new_h / height;
new_w = Math.round(new_w / tempdouble);
new_h = Math.round(new_h / tempdouble);
}
}
BufferedImage tag = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); // 绘制缩小后的图
if(StringUtils.isNotBlank(newImgName)){
final int len = file.getPath().lastIndexOf(File.separator);
String fn = file.getPath().substring(0, len + 1) + newImgName;
file = new File(fn);
}
FileOutputStream newimage = new FileOutputStream(file); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
param.setQuality((float) (100 / 100.0), true);// 设置图片质量,100最大,默认70
encoder.encode(tag, param);
encoder.encode(tag); // 将JPEG编码
newimage.close();
}
}
public static void main(String[] s) {
//File srcFile = new java.io.File("d:/我的文档/桌面/桌面文件/sara_and_zack.jpg");
//ImageUtils.upload("555555.jpg", "d:/我的文档/桌面/桌面文件/", srcFile);
String ss = "/upload/content/aa.jps";
String [] aa = ss.split("/");
}
}
分享到:
相关推荐
本文介绍了使用Java实现上传图片并生成缩略图的方法,包括获取文件路径、读取图像、创建缩略图及保存缩略图等步骤。通过这种方式,可以在不损失原图质量的前提下,有效地减少加载时间,提升用户体验。此外,本文还...
在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...
根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...
NULL 博文链接:https://wenkaixuan.iteye.com/blog/785823
4. **质量设置**:在创建缩略图时,可以设置`RenderingHints`以优化图像质量,比如使用`RenderingHints.VALUE_INTERPOLATION_BILINEAR`来实现双线性插值,以获得更平滑的缩放效果。 5. **保存缩略图**:最后,使用`...
// 创建缩略图 BufferedImage thumbnail = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = thumbnail.createGraphics(); graphics.setRenderingHint...
3. **创建缩略图**: - `createThumbnail` 方法:接收源图片路径、目标宽度、目标高度、质量以及目标路径作为参数。 - `BufferedImage`:首先读取源图像,然后创建一个新的 `BufferedImage` 对象,用于存放缩略图...
对于Java开发者,可以使用Java Advanced Imaging (JAI) 库或JavaFX的`WritableImage`类来创建缩略图。在JAI中,可以使用`BufferedImageOp`接口的`filter()`方法来调整图像大小。而在JavaFX中,可以使用`Scale`变换...
Java 缩略图生成库,如“thumbnailator-0.4.4.jar”,是一个非常实用的工具,尤其对于那些在处理图像文件时需要快速创建预览或者缩略图的开发者而言。这个库提供了简单易用的API,可以方便地集成到Java项目中,大大...
在这个例子中,我们使用JAI的`fileload`操作读取图像,然后使用`scale`操作创建缩略图,最后使用`filestore`操作保存结果。 总结来说,Java提供了两种主要的方式来创建等比例缩略图:Java 2D API和JAI API。Java 2D...
这些信息对于创建缩略图至关重要,因为它们决定了动画的播放速度和顺序。 4. **创建缩略图**:GIF4J提供了`resize`方法来调整图像尺寸。你需要指定新的宽度和高度,以及是否保持原始的宽高比。例如: ```java ...
在Java中生成缩略图是一项常见的任务,尤其是在开发Web应用或者需要处理用户上传图片的系统中。这个过程涉及对原始图像进行重新尺寸调整,以创建一个较小的版本,通常用于预览或节省存储空间。在提供的代码片段中,...
在Java中实现动态缩略图涉及到图像处理和流媒体技术。下面我们将深入探讨这个话题。 首先,Java提供了丰富的API来处理图像,如Java Advanced Imaging (JAI)库和Java 2D API。在Java 2D API中,`java.awt.image`和`...
然而,这些API在创建缩略图时可能会显得不够灵活,因此通常会借助第三方库,比如Apache Commons Imaging (以前称为Commons IO) 或 Java Advanced Imaging (JAI)。不过,根据描述,我们仅使用了简单的Java代码,所以...
3. **创建缩略图图像**:使用`BufferedImage`的`getGraphics()`方法获取图形上下文,然后调用`drawImage()`方法绘制缩放后的图像。 ```java BufferedImage thumbnail = new BufferedImage(newWidth, newHeight, ...
以Imgscalr为例,我们可以创建一个`BufferedImage`对象来表示上传的原始图片,然后调用`Imgscalr.scale()`方法,传入原始图片和期望的缩略图尺寸,即可得到缩略图。这个过程需要注意保持原始图片的比例,避免拉伸...
本篇我们将深入探讨“ImageScale”这个Java算法,它是用于创建图片缩略图的一种技术。 首先,让我们理解“缩略图”的概念。缩略图是指按照一定的比例缩小原图尺寸的图片,通常用于预览或快速浏览。在Java中,生成...
### Java 实现将图片和缩略图存储到数据库中的详细解析 #### 一、知识点概述 本文档主要介绍如何使用Java编程语言实现将图片及其对应的缩略图存储到数据库中的功能。这一技术在多种场景下都非常有用,比如在线商城...
2023 年 6 月 28 日Thumbnailator 0.4.20 已发布!详情请参阅变更。Thumbnailator 现在可通过 Maven...例如,创建目录中图像文件的 JPEG 缩略图,所有图像均调整为最大尺寸 640 像素 x 480 像素,同时保留原始图像的纵
平时工作中用到的一些技术点,拿出来和大家共享一下。 有些功能比较粗糙,如果大家有更加完善的示例或建议,欢迎交流。...1、jpg图片缩略图:ImageUtil 2、poi创建excel:CDSHdlReport 3、计算表达式求值:Cal