在某些系统中,需要使用和管理很多图片,现在图片占用的资源空间越来越大,因此需要将图片缩小,特别是一些网站上的相册会有很多的缩略图。
在实现缩略图的过程中,主要使用BufferedImage和ImageIO两个类。首先将图片信息读取到BufferedImage对象中,接着构造缩略图的BufferedImage对象,最后将缩略图输出。ImageIO类提供了read()和write()方法,用于读取图片中的信息。
生成缩略图的代码如下:
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.io.InputStream;
import java.io.File;
import java.io.FileOutputStream;
public class ImageTest{
/**
*生成缩略图
*fromFileStr:源图片路径
*saveToFileStr:缩略图路径
*width:缩略图的宽
*hight:缩略图的高
*/
public static void saveImageAsJpg(String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception{
BufferedImage srcImage;
String imgType="JPEG";
if(fromFileStr.toLowerCase().endsWith(".png"));{
imgType="PNG";
}
File fromFile=new File(fromFileStr);
File saveFile=new File(saveToFileStr);
srcImage=ImageIO.read(fromFile);
if(width>0||hight>0){
srcImage=resize(srcImage,width,hight);
}
ImageIO.write(srcImage,imgType,saveFile);
}
/**
*将源图片的BufferedImage对象生成缩略图
*source:源图片的BufferedImage对象
*targetW:缩略图的宽
*targetH:缩略图的高
*/
public static BufferedImage resize(BufferedImage source,int targetW,int targetH){
int type=source.getType();
BufferedImage target=null;
double sx=(double)targetW/source.getWidth();
double sy=(double)targetH/source.getHeight();
//这里想实现在targetW,targetH范围内实现等比例的缩放。
//如果不需要等比例的缩放则下面的if else语句注释掉即可
if(sx>sy){
sx=sy;
targetW=(int)(sx*source.getWidth());
}
else {
sy=sx;
targetH=(int)(sx*source.getHeight());
}
if(type==BufferedImage.TYPE_CUSTOM){
ColorModel cm =source.getColorModel();
WritableRaster raster=cm.createCompatibleWritableRaster(targetW,targetH);
boolean alphaPremultiplied=cm.isAlphaPremultiplied();
target=new BufferedImage(cm,raster,alphaPremultiplied,null);
}
else
target =new BufferedImage(targetW,targetH,type);
Graphics2D g=target.createGraphics();
g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy));
g.dispose();
return target;
}
public static void main(String args[]){
try{
ImageTest.saveImageAsJpg("C:\\Users\\h-xxw\\Desktop\\Vedio\\eq.jpg",
"D:\\basic\\bihao.jpg",100,100);
}
catch(Exception e){
e.printStackTrace();
}
}
}
分享到:
相关推荐
java 上传图片时生成对应的缩略图,缩略图的大小可手动更改,代码中有详细注释
pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
动态添加控件实现多文件上传,并对图片大文件进行压缩生成缩略图来保存,以节省空间和加快图片加载速度。
相关知识struts2,fileupload等,实现图片上传并生成缩略图。单文件上传,图片展示直接使用jQuery FancyBox,效果不错,值得初学者研究学习。
可以将图片文件夹中所有的图片,快速生成一个联系表文件(缩略图),方便我们快速预览查看文件夹中的内容,尤其是在图片数量很多的时候,非常的方便。
windows生成缩略图的sample代码,可以用来自定义文件类型的缩略图
php 上传图片生成缩略图 在PHP中获取EXIF信息应用EXIF函数库中的函数。首先,应该确定EXIF函数是否已经加载,在php.ini文件中查看“extension=php_exif.dll”前是否有分号“;”,如果有则说明未加载,那么就要去掉...
从ueditor中把批量上传图片的flash分离出来,同时实现生成缩略图
struts2上传文件、生成缩略图、添加文字和图片水印,
动态缩略图实现方案,java实现动态缩略图
大文件上传类,使用简单,显示上传进度条,图片生成缩略图,断线续传,文件类型限制,文件大小限制,上传文件个数限制
用于将pdf文件生成其缩略图以供显示时使用,很实用的类似于百度文库中的文档里列表的图片一样
介绍一个php图片上传并生成缩略图类,判断图片是否属于允许格式内,获取文件大小,获取文件类型,获取文件名称,新建文件名,上传文件。
给指定位置的图片文件批量添加缩略图
原创资源,比网上下载的要好用很多哦. 有使用说明.. --------------------------------------- ... // Defining Class $yukle = new upload; ...// Set Max Size $yukle->set_max_size(180000);...// Set Temp Name for ...
批量生成缩略图,加水印,重命名,在网页制作中常常需要为大批量图片生成缩略图,“批量缩略图工具”就是这样一个工具,为图片文件批量生成缩略图。
Struts2上传图片并生成等比例缩略图的实例,在上传文件的同时生成等比例的缩略图,分放在不同的文件夹下。自己亲测,没有问题。
本项目的功能是上传文件 处理图片(加水印,生成缩略图,压缩图片) 生成XML文档 拆分XML文档
//功能:生成缩略图 class CreatMiniature { //公共变量 var $srcFile = ""; //原图 var $echoType; //输出图片类型,link--不保存为文件;file--保存为文件 var $im = ""; //临时变量 var...