求能够缩小图片到一定尺寸的java类

okkoxiong8025 2004-11-23 03:58:29
由于是新开固定的小窗口浏览图片,要求超过规格的图片能自动按比例缩小,请教下高人了
...全文
326 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
okkoxiong8025 2004-11-23
  • 打赏
  • 举报
回复
唔,我自己再看看吧,大部分都有了。。谢了啊
okkoxiong8025 2004-11-23
  • 打赏
  • 举报
回复
先谢了,不过。。好像没有判断原图片尺寸的功能吧?
okitgo 2004-11-23
  • 打赏
  • 举报
回复
package com.gfc.tool;

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.*;

public class Small_pic{
String InputDir; //输入图路径
String OutputDir; //输出图路径
String InputFileName; //输入图文件名
String OutputFileName; //输出图文件名
int OutputWidth=80; //默认输出图片宽
int OutputHeight=80; //默认输出图片高
int rate=0;
boolean proportion=true; //是否等比缩放标记(默认为等比缩放)

public Small_pic(){
//初始化变量
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();
}

}


okkoxiong8025 2004-11-23
  • 打赏
  • 举报
回复
?放出来啊
okitgo 2004-11-23
  • 打赏
  • 举报
回复
我有一个java程序可以做个这个你试试

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧