在java中有没有产生固定尺寸图片的方法,就是在传入图片时就设置图片的大小,而不是往组件上画时设置大小

ImageButtonButt_danci=newImageButton();Butt_danci.setBackgroundImage(newImageIcon(img... ImageButton Butt_danci=new ImageButton();
Butt_danci.setBackgroundImage(new ImageIcon(img_danci1));
Butt_danci.setRolloverBackgroundImage(new ImageIcon(img_danci2));
Butt_danci.setPressedBackgroundImage(new ImageIcon(img_danci3));
ImageButton 重写的Button 类
img_danci1、2、3 ,是图像,我想找一个方法,可以随意修改它们的大小,请高手们指教!
展开
 我来答
南京利德盛模温机公司
2008-08-08 · TA获得超过131个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:142万
展开全部
这个是我用jsp写的一个缩略图程序,你可以自己改一下,就可以达到你想要的目的了。
<%@ page import="javax.imageio.ImageIO"%>
<%@ page import="javax.imageio.IIOException"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="java.awt.Image"%>
<%@ page import="java.awt.image.AffineTransformOp"%>
<%@ page import="java.awt.geom.AffineTransform"%>
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.awt.image.*,com.sun.image.codec.jpeg.*,com.jspsmart.upload.*,java.util.*"%>
<%
try{
String imagetype=request.getParameter("image");
String filename1="D:\\tomcat5\\webapps\\hkc\\ebay\\result.jpg";
String filename2="D:\\tomcat5\\webapps\\hkc\\ebay\\result_min.gif";
java.io.File fi = new java.io.File(filename1); //大图文件
//java.io.File fo = new java.io.File(filename2); //将要转换出的小图文件
int nw = 0,nh=0;
AffineTransform transform = new AffineTransform();
//BufferedImage bis = ImageIO.read(fi);
Image bis = javax.imageio.ImageIO.read(fi); //构造Image对象
int w = bis.getWidth(null);
int h = bis.getHeight(null);
double scale = (double)w/h;
if(w>=h){
if(imagetype.equals("max")){
nw=240;
}else{
nw=80;
}
nh = Math.round((nw*h)/w);
}else{
if(imagetype.equals("max")){
nh=240;
}else{
nh=80;
}
nw = Math.round((nh*w)/h);
}
//double sx = (double)nw/w;
//double sy = (double)nh/h;
//transform.setToScale(sx,sy);
//out.print("原图weight="+w + " height=" +h+"<br>");
//AffineTransformOp ato = new AffineTransformOp(transform,null);
BufferedImage bid = new BufferedImage(nw,nh,BufferedImage.TYPE_3BYTE_BGR);
bid.getGraphics().drawImage(bis,0,0,nw,nh,null); //绘制缩小后的图
FileOutputStream newimage=new FileOutputStream(filename2); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(bid); //近JPEG编码
newimage.close();
//ato.filter(bis,bid);
//ImageIO.write(bid,"jpg",fo);
out.print("图片转换成功.");
}catch(Exception e){
throw e;
}
%>
seekfor_
2008-08-06 · TA获得超过371个赞
知道小有建树答主
回答量:170
采纳率:66%
帮助的人:182万
展开全部
Image类里有个image.getScaledInstance(int width,int height ,int hints)的方法可以把图片压缩到某个尺寸,你自己去查查api吧,如果还有问题可以给我留言
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式