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("/");
}
}
分享到:
相关推荐
NULL 博文链接:https://wenkaixuan.iteye.com/blog/785823
平时工作中用到的一些技术点,拿出来和大家共享一下。 有些功能比较粗糙,如果大家有更加完善的示例或建议,欢迎交流。...1、jpg图片缩略图:ImageUtil 2、poi创建excel:CDSHdlReport 3、计算表达式求值:Cal
主要介绍了java实现创建缩略图、伸缩图片比例生成的方法,可实现针对图片大小的缩放功能,是Java针对图片操作的典型应用,需要的朋友可以参考下
epub-thumbnailer是一个简单的脚本,试图在epub文件中查找封面并为其创建缩略图。 为什么? 因为我希望我的文件管理器(Nautilus,Thunar,Caja等)对我的epub电子书显示漂亮的缩略图,就像对pdf文件或图像一样,...
从文件夹中的所有图像创建缩略图。 #从终端类型的/TumbnailCreator/目录编译: javac *.java 打包为可运行的 jar 类型: jar cvfM ThumbnailCreator.jar me/benaherne/ThumbnailCreator/Main me/benaherne/...
java:html生成图片,所有生成方法的优缺点。
Java API创建网页快照或缩略图 文献资料 如何构建,安装和使用? 转到! 支持与讨论 电子邮件给asqatasun AT asqatasun dot org (只说英语,法语和克林贡语:)) 贡献 我们非常高兴您加入我们! 您可以通过多种...
1、获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图 (1)缺点就是必须更新媒体库才能看到最新的视频的缩略图 [java] 代码如下:/** * @param context * @param cr * @param Videopath * @return ...
科尔多瓦插件视频缩略图 提供对使用Cordova在Android上呈现视频缩略图的支持。 动机 在网上搜索了一个视频缩略图插件后,我似乎找不到一个“开箱即用”的插件。 我决定自己创建一个可以生成base64编码字符串的字符串...
试用版 ImageGear for Java Linux 32x 试用版 ImageGear for Java Windows 32x 试用版 试用版 ...图片的修复和维护、创建缩略图、颜色处理、图片清洁、去除黑点、黑线、虚线,旋转等很多图片处理上的功能。
我们还使用了Java作为主要的编程语言,它是安卓应用开发的主流语言,具有丰富的库和框架,使得开发人员可以轻松实现各种功能和特性。 此外,我们的安卓项目源码还注重用户体验和界面设计。我们提供了一系列的界面...
动漫/漫画风格的程序女孩的集合,用作缩略图。 此回购包含了可以模仿计算机程序的Anime / Manga女孩图像集。 这些图像旨在用于桌面图标上的缩略图或类似目的。 关于版权 该存储库的作者尚未创建这些图像。 尽管从...
ViewThumb: ViewThumb是imageJ的插件,可让您提取和比较图像的缩略图 去做: ·实现允许您更改缩略图图像的功能 #谢谢: 非常感谢创建一个
3. 图片管理:支持图片的批量上传、下载、删除和缩略图预览。 4. 评论管理:用户可以对相册和图片进行评论,管理员可对评论进行审核和管理。 5. 权限管理:实现用户角色的分配和管理,确保系统安全性。 6. 响应式...
*显示apk图标、图片缩略图,支持缩略图缓存、显示ZIP内图片缩略图 *内置文本编辑器、图片浏览器、音乐播放器、字体预览器、脚本执行器 *完整的zip文件操作功能,可直接添加、重命名、删除ZIP内文件,免二次压缩 *...
img-eresizer 适用于Java的高效图像缩放器。 快速创建图像缩略图,而不会消耗堆内存。
视频缩略图 可以使用ThumbnailUtils在Android应用程序中轻松创建缩略图。 如果要从视频创建缩略图,则需要为视频和缩略图大小MICRO或MINI类型指定文件路径。
批量缩小和压缩jpg图像的Java程序。 将原始图像放入“源”目录并运行 jar 文件以创建缩略图。 缩略图将在“目标”文件夹中创建。