来源: http://wing929.javaeye.com/blog/185508
方法1:[第一种方法比后一种生成的缩略图要清晰]
- importjavax.imageio.ImageIO;
-
importjava.awt.image.BufferedImage;
-
importjava.awt.image.ColorModel;
-
importjava.awt.image.WritableRaster;
-
importjava.awt.*;
-
importjava.awt.geom.AffineTransform;
-
importjava.io.InputStream;
-
importjava.io.File;
-
importjava.io.FileOutputStream;
-
publicclassTest{
-
publicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH){
-
-
inttype=source.getType();
-
BufferedImagetarget=null;
-
doublesx=(double)targetW/source.getWidth();
-
doublesy=(double)targetH/source.getHeight();
-
-
-
if(sx>sy)
- {
- sx=sy;
-
targetW=(int)(sx*source.getWidth());
-
}else{
- sy=sx;
-
targetH=(int)(sy*source.getHeight());
- }
-
if(type==BufferedImage.TYPE_CUSTOM){
- ColorModelcm=source.getColorModel();
- WritableRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);
-
booleanalphaPremultiplied=cm.isAlphaPremultiplied();
-
target=newBufferedImage(cm,raster,alphaPremultiplied,null);
-
}else
-
target=newBufferedImage(targetW,targetH,type);
- Graphics2Dg=target.createGraphics();
-
- g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
- g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy));
- g.dispose();
-
returntarget;
- }
-
publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)
-
throwsException{
- BufferedImagesrcImage;
-
-
StringimgType="JPEG";
-
if(fromFileStr.toLowerCase().endsWith(".png")){
-
imgType="PNG";
- }
-
-
FilesaveFile=newFile(saveToFileStr);
-
FilefromFile=newFile(fromFileStr);
- srcImage=ImageIO.read(fromFile);
-
if(width>0||hight>0)
- {
- srcImage=resize(srcImage,width,hight);
- }
- ImageIO.write(srcImage,imgType,saveFile);
- }
-
-
publicstaticvoidmain(Stringargv[]){
-
try{
-
-
Test.saveImageAsJpg("E:/Document/MyPictures/3.gif","c:/6.gif",50,50);
-
}catch(Exceptione)
- {
- e.printStackTrace();
- }
- }
- }
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 Test {
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,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)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
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();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);
}
public static void main (String argv[]) {
try{
//参数1(from),参数2(to),参数3(宽),参数4(高)
Test.saveImageAsJpg("E:/Document/My Pictures/3.gif","c:/6.gif",50,50);
} catch(Exception e)
{
e.printStackTrace();
}
}
}
方法2:
- importjava.io.*;
-
importjava.util.*;
-
importcom.sun.image.codec.jpeg.*;
-
importjava.awt.image.*;
-
importjava.awt.*;
-
importjava.net.*;
-
importjava.applet.*;
-
importjava.sql.*;
-
-
-
-
-
publicclassTes{
-
StringInputDir;
-
StringOutputDir;
-
StringInputFileName;
-
StringOutputFileName;
-
intOutputWidth=80;
-
intOutputHeight=80;
-
intrate=0;
-
booleanproportion=true;
-
publicTes(){
-
-
InputDir="";
-
OutputDir="";
-
InputFileName="";
-
OutputFileName="";
-
OutputWidth=80;
-
OutputHeight=80;
-
rate=0;
- }
-
publicvoidsetInputDir(StringInputDir){
-
this.InputDir=InputDir;
- }
-
publicvoidsetOutputDir(StringOutputDir){
-
this.OutputDir=OutputDir;
- }
-
publicvoidsetInputFileName(StringInputFileName){
-
this.InputFileName=InputFileName;
- }
-
publicvoidsetOutputFileName(StringOutputFileName){
-
this.OutputFileName=OutputFileName;
- }
-
publicvoidsetOutputWidth(intOutputWidth){
-
this.OutputWidth=OutputWidth;
- }
-
publicvoidsetOutputHeight(intOutputHeight){
-
this.OutputHeight=OutputHeight;
- }
-
publicvoidsetW_H(intwidth,intheight){
-
this.OutputWidth=width;
-
this.OutputHeight=height;
- }
-
publicStrings_pic(){
- BufferedImageimage;
- StringNewFileName;
-
-
Filefile=newFile(OutputDir+OutputFileName);
-
FileOutputStreamtempout=null;
-
try{
-
tempout=newFileOutputStream(file);
-
}catch(Exceptionex){
- System.out.println(ex.toString());
- }
-
Imageimg=null;
- Toolkittk=Toolkit.getDefaultToolkit();
-
Appletapp=newApplet();
-
MediaTrackermt=newMediaTracker(app);
-
try{
- img=tk.getImage(InputDir+InputFileName);
-
mt.addImage(img,0);
-
mt.waitForID(0);
-
}catch(Exceptione){
- e.printStackTrace();
- }
-
if(img.getWidth(null)==-1){
-
System.out.println("can'tread,retry!"+"<BR>");
-
return"no";
-
}else{
-
intnew_w;
-
intnew_h;
-
if(this.proportion==true){
-
-
doublerate1=((double)img.getWidth(null))/
-
(double)OutputWidth+0.1;
-
doublerate2=((double)img.getHeight(null))/
-
(double)OutputHeight+0.1;
-
doublerate=rate1>rate2?rate1:rate2;
-
new_w=(int)(((double)img.getWidth(null))/rate);
-
new_h=(int)(((double)img.getHeight(null))/rate);
-
}else{
-
new_w=OutputWidth;
-
new_h=OutputHeight;
- }
-
BufferedImagebuffImg=newBufferedImage(new_w,new_h,
- BufferedImage.TYPE_INT_RGB);
- Graphicsg=buffImg.createGraphics();
- g.setColor(Color.white);
-
g.fillRect(0,0,new_w,new_h);
-
g.drawImage(img,0,0,new_w,new_h,null);
- g.dispose();
- JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(tempout);
-
try{
- encoder.encode(buffImg);
- tempout.close();
-
}catch(IOExceptionex){
- System.out.println(ex.toString());
- }
- }
-
return"ok";
- }
-
publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,
- StringOutputFileName){
-
-
this.InputDir=InputDir;
-
-
this.OutputDir=OutputDir;
-
-
this.InputFileName=InputFileName;
-
-
this.OutputFileName=OutputFileName;
-
returns_pic();
- }
-
publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,
-
StringOutputFileName,intwidth,intheight,
-
booleangp){
-
-
this.InputDir=InputDir;
-
-
this.OutputDir=OutputDir;
-
-
this.InputFileName=InputFileName;
-
-
this.OutputFileName=OutputFileName;
-
- setW_H(width,height);
-
-
this.proportion=gp;
-
returns_pic();
- }
-
publicstaticvoidmain(String[]a){
-
-
Tesmypic=newTes();
- System.out.println(
-
mypic.s_pic("E:\Document\MyPictures\",
-
"E:\Document\MyPictures\",
-
"topbg-3.gif","3.gif",400,400,true)
- );
- }
- }
分享到:
相关推荐
在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 Java 中,生成缩略图可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用BufferedImage类 使用BufferedImage类可以实现图片的缩略图...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
java 生成缩略图类 源代码 (已经封装好)
根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...
java图片裁剪和java生成缩略图.pdf
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...
java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...
Java 生成缩略图的方法示例 Java 生成缩略图是指使用 Java 语言生成缩略图的过程,这个过程中涉及到各种图形处理技巧。下面将详细介绍 Java 生成缩略图的方法示例。 图像处理基础 在 Java 中,图像处理是通过使用...
在Java中生成缩略图是一项常见的任务,尤其是在开发Web应用或者需要处理用户上传图片的系统中。这个过程涉及对原始图像进行重新尺寸调整,以创建一个较小的版本,通常用于预览或节省存储空间。在提供的代码片段中,...
在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...
生成缩略图通常可以借助于图像处理库,如Java的`javax.imageio.ImageIO`或第三方库如Apache Commons Imaging。以下是一个简单的示例: ```java try { BufferedImage originalImage = ImageIO.read(file....
java 生成缩略图 java 生成缩略图 java 生成缩略图java 生成缩略图java 生成缩略图
在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...
在这个特定的场景中,"JSP上传图片并生成缩略图"是一个常见的功能需求,尤其是在开发包含用户交互和多媒体内容的Web应用时。下面我们将详细探讨这一技术实现的关键知识点。 首先,**上传组件**是Web应用中用于接收...
在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...
/** * 压缩图片方法 * * @param oldFile 将要压缩的图片 * @param width 压缩宽 * @param height 压缩高 * @param quality 压缩清晰度 建议为1.0 * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名...
网上找的缩略图生成方法都不够清晰,于是决定自己研究和改进生成缩略图方法。此方法压缩后的图片小,清晰度高,压缩速度快。5000张图片大概抽根烟的功夫就压缩完了。高清的哦。各种参数都是可配的,方便移植到自己...
java大图生成缩略图。。。。。。。。。。。。