//
缩略图实现,将图片(jpg,gif,bmp等等)真实的变成想要的大小
import java.io. * ;
import java.util. * ;
import com.sun.image.codec.jpeg. * ;
import java.awt.image. * ;
import java.awt. * ;
import java.net. * ;
import java.applet. * ;
import java.sql. * ;
// 缩略图类,
// 本java类能将jpg图片文件,进行等比或非等比的大小转换。
// 具体使用方法
// s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class DwindlePic{
String InputDir; // 输入图路径
String OutputDir; // 输出图路径
String InputFileName; // 输入图文件名
String OutputFileName; // 输出图文件名
int OutputWidth = 80 ; // 默认输出图片宽
int OutputHeight = 80 ; // 默认输出图片高
int rate = 0 ;
boolean proportion = true ; // 是否等比缩放标记(默认为等比缩放)
public DwindlePic() {
// 初始化变量
InputDir = "" ;
OutputDir = "" ;
InputFileName = "" ;
OutputFileName = "" ;
OutputWidth = 80 ;
OutputHeight = 80 ;
rate = 0 ;
}
public void setInputDir(String InputDir) {
this .InputDir = InputDir;
}
public void setOutputDir(String OutputDir) {
this .OutputDir = OutputDir;
}
public void setInputFileName(String InputFileName) {
this .InputFileName = InputFileName;
}
public void setOutputFileName(String OutputFileName) {
this .OutputFileName = OutputFileName;
}
public void setOutputWidth( int OutputWidth) {
this .OutputWidth = OutputWidth;
}
public void setOutputHeight( int OutputHeight) {
this .OutputHeight = OutputHeight;
}
public void setW_H( int width, int height) {
this .OutputWidth = width;
this .OutputHeight = height;
}
public String s_pic() {
BufferedImage image;
String NewFileName;
// 建立输出文件对象
File file = new File(OutputDir + OutputFileName);
FileOutputStream tempout = null ;
try {
tempout = new FileOutputStream(file);
}
catch (Exception ex) {
System.out.println(ex.toString());
}
Image img = null ;
Toolkit tk = Toolkit.getDefaultToolkit();
Applet app = new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img = tk.getImage(InputDir + InputFileName);
mt.addImage(img, 0 );
mt.waitForID( 0 );
}
catch (Exception e) {
e.printStackTrace();
}
if (img.getWidth( null ) == - 1 ) {
System.out.println( " can't read,retry! " + " <BR> " );
return " no " ;
}
else {
int new_w;
int new_h;
if ( this .proportion == true ) { // 判断是否是等比缩放.
// 为等比缩放计算输出的图片宽度及高度
double rate1 = ( ( double ) img.getWidth( null )) / ( double ) OutputWidth +
0.1 ;
double rate2 = ( ( double ) img.getHeight( null )) / ( double ) OutputHeight +
0.1 ;
double rate = 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; // 输出的图片高度
}
BufferedImage buffImg = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
Graphics g = 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();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
try {
encoder.encode(buffImg);
tempout.close();
}
catch (IOException ex) {
System.out.println(ex.toString());
}
}
return " ok " ;
}
public String s_pic(String InputDir, String OutputDir, String InputFileName,
String OutputFileName) {
// 输入图路径
this .InputDir = InputDir;
// 输出图路径
this .OutputDir = OutputDir;
// 输入图文件名
this .InputFileName = InputFileName;
// 输出图文件名
this .OutputFileName = OutputFileName;
return s_pic();
}
public String s_pic(String InputDir, String OutputDir, String InputFileName,
String OutputFileName, int
width, int height, boolean gp) {
// 输入图路径
this .InputDir = InputDir;
// 输出图路径
this .OutputDir = OutputDir;
// 输入图文件名
this .InputFileName = InputFileName;
// 输出图文件名
this .OutputFileName = OutputFileName;
// 设置图片长宽
setW_H(width, height);
// 是否是等比缩放 标记
this .proportion = gp;
return s_pic();
}
/**
public static void main(String[] a)
{
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
DwindlePic mypic = new DwindlePic();
System.out.println(
mypic.s_pic("e:/Tomcat/webapps/pms/image/",
"e:/Tomcat/webapps/pms/image/",
"test.jpg", "new.jpg", 120, 80, true)
);
}
*/
}
import java.io. * ;
import java.util. * ;
import com.sun.image.codec.jpeg. * ;
import java.awt.image. * ;
import java.awt. * ;
import java.net. * ;
import java.applet. * ;
import java.sql. * ;
// 缩略图类,
// 本java类能将jpg图片文件,进行等比或非等比的大小转换。
// 具体使用方法
// s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class DwindlePic{
String InputDir; // 输入图路径
String OutputDir; // 输出图路径
String InputFileName; // 输入图文件名
String OutputFileName; // 输出图文件名
int OutputWidth = 80 ; // 默认输出图片宽
int OutputHeight = 80 ; // 默认输出图片高
int rate = 0 ;
boolean proportion = true ; // 是否等比缩放标记(默认为等比缩放)
public DwindlePic() {
// 初始化变量
InputDir = "" ;
OutputDir = "" ;
InputFileName = "" ;
OutputFileName = "" ;
OutputWidth = 80 ;
OutputHeight = 80 ;
rate = 0 ;
}
public void setInputDir(String InputDir) {
this .InputDir = InputDir;
}
public void setOutputDir(String OutputDir) {
this .OutputDir = OutputDir;
}
public void setInputFileName(String InputFileName) {
this .InputFileName = InputFileName;
}
public void setOutputFileName(String OutputFileName) {
this .OutputFileName = OutputFileName;
}
public void setOutputWidth( int OutputWidth) {
this .OutputWidth = OutputWidth;
}
public void setOutputHeight( int OutputHeight) {
this .OutputHeight = OutputHeight;
}
public void setW_H( int width, int height) {
this .OutputWidth = width;
this .OutputHeight = height;
}
public String s_pic() {
BufferedImage image;
String NewFileName;
// 建立输出文件对象
File file = new File(OutputDir + OutputFileName);
FileOutputStream tempout = null ;
try {
tempout = new FileOutputStream(file);
}
catch (Exception ex) {
System.out.println(ex.toString());
}
Image img = null ;
Toolkit tk = Toolkit.getDefaultToolkit();
Applet app = new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img = tk.getImage(InputDir + InputFileName);
mt.addImage(img, 0 );
mt.waitForID( 0 );
}
catch (Exception e) {
e.printStackTrace();
}
if (img.getWidth( null ) == - 1 ) {
System.out.println( " can't read,retry! " + " <BR> " );
return " no " ;
}
else {
int new_w;
int new_h;
if ( this .proportion == true ) { // 判断是否是等比缩放.
// 为等比缩放计算输出的图片宽度及高度
double rate1 = ( ( double ) img.getWidth( null )) / ( double ) OutputWidth +
0.1 ;
double rate2 = ( ( double ) img.getHeight( null )) / ( double ) OutputHeight +
0.1 ;
double rate = 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; // 输出的图片高度
}
BufferedImage buffImg = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
Graphics g = 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();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
try {
encoder.encode(buffImg);
tempout.close();
}
catch (IOException ex) {
System.out.println(ex.toString());
}
}
return " ok " ;
}
public String s_pic(String InputDir, String OutputDir, String InputFileName,
String OutputFileName) {
// 输入图路径
this .InputDir = InputDir;
// 输出图路径
this .OutputDir = OutputDir;
// 输入图文件名
this .InputFileName = InputFileName;
// 输出图文件名
this .OutputFileName = OutputFileName;
return s_pic();
}
public String s_pic(String InputDir, String OutputDir, String InputFileName,
String OutputFileName, int
width, int height, boolean gp) {
// 输入图路径
this .InputDir = InputDir;
// 输出图路径
this .OutputDir = OutputDir;
// 输入图文件名
this .InputFileName = InputFileName;
// 输出图文件名
this .OutputFileName = OutputFileName;
// 设置图片长宽
setW_H(width, height);
// 是否是等比缩放 标记
this .proportion = gp;
return s_pic();
}
/**
public static void main(String[] a)
{
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
DwindlePic mypic = new DwindlePic();
System.out.println(
mypic.s_pic("e:/Tomcat/webapps/pms/image/",
"e:/Tomcat/webapps/pms/image/",
"test.jpg", "new.jpg", 120, 80, true)
);
}
*/
}