




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、方法1:第一种方法比后一种生成的缩略图要清晰Java代码1.importjavax.imageio.ImageIO;2.importjava.awt.image.BufferedImage;3.importjava.awt.image.ColorModel;4.importjava.awt.image.WritableRaster;5.importjava.awt.*;6.importjava.awt.geom.AffineTransform;7.importjava.io.InputStream;8.importjava.io.File;9.importjava.io.FileOutputS
2、tream;10.11.publicclassTest12.publicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH)13./targetW,targetH分别表示目标长和宽inttype=source.getType();BufferedImagetarget=null;doublesx=(double)targetW/source.getWidth();doublesy=(double)targetH/source.getHeight();18./这里想实现在targetW,targetH范围内实现等
3、比缩放。如果不需要等比缩放19./则将下面的ifelse语句注释即可if(sxsy)sx=sy;targetW=(int)(sx*source.getWidth();elsesy=sx;targetH=(int)(sy*source.getHeight();if(type=BufferedImage.TYPE_CUSTOM)/handmadeColorModelcm=source.getColorModel();WritableRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);booleanalphaPremulti
4、plied=cm.isAlphaPremultiplied();target=newBufferedImage(cm,raster,alphaPremultiplied,null);elsetarget=newBufferedImage(targetW,targetH,type);Graphics2Dg=target.createGraphics();/smootherthanexlax:g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage
5、(source,AffineTransform.getScaleInstance(sx,sy);g.dispose();returntarget;publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)throwsExceptionBufferedImagesrcImage;/Stringex=fromFileStr.substring(fromFileStr.indexOf(.),fromFileStr.length();StringimgType=JPEG;if(fromF
6、ileStr.toLowerCase().endsWith(.png)imgType=PNG;/System.out.println(ex);FilesaveFile=newFile(saveToFileStr);FilefromFile=newFile(fromFileStr);srcImage=ImageIO.read(fromFile);if(width0|hight0)srcImage=resize(srcImage,width,hight);ImageIO.write(srcImage,imgType,saveFile);59.60.61.publicstaticvoidmain(S
7、tringargv)try参数1(from),参数2(to),参数3(宽),参数4(高)Test.saveImageAsJpg(E:/Document/MyPictures/3.gif,c:/6.gif,50,50);catch(Exceptione)e.printStackTrace();70.importjavax.imageio.ImageIO;importjava.awt.image.BufferedImage;importjava.awt.image.ColorModel;importjava.awt.image.WritableRaster;importjava.awt.*;imp
8、ortjava.awt.geom.AffineTransform;importjava.io.InputStream;importjava.io.File;importjava.io.FileOutputStream;publicclassTestpublicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH)/targetW,targetH分别表示目标长和宽inttype=source.getType();BufferedImagetarget=null;doublesx=(double)targetW/so
9、urce.getWidth();doublesy=(double)targetH/source.getHeight();/这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放/则将下面的ifelse语句注释即可if(sxsy)sx=sy;targetW=(int)(sx*source.getWidth();elsesy=sx;targetH=(int)(sy*source.getHeight();if(type=BufferedImage.TYPE_CUSTOM)/handmadeColorModelcm=source.getColorModel();Writabl
10、eRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);booleanalphaPremultiplied=cm.isAlphaPremultiplied();target=newBufferedImage(cm,raster,alphaPremultiplied,null);elsetarget=newBufferedImage(targetW,targetH,type);Graphics2Dg=target.createGraphics();/smootherthanexlax:g.setRenderingHint(
11、RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy);g.dispose();returntarget;publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)throwsExceptionBufferedImagesrcImage;/Stringex=fromFile
12、Str.substring(fromFileStr.indexOf(.),fromFileStr.length();StringimgType=JPEG;if(fromFileStr.toLowerCase().endsWith(.png)imgType=PNG;/System.out.println(ex);FilesaveFile=newFile(saveToFileStr);FilefromFile=newFile(fromFileStr);srcImage=ImageIO.read(fromFile);if(width0|hight0)srcImage=resize(srcImage,
13、width,hight);ImageIO.write(srcImage,imgType,saveFile);publicstaticvoidmain(Stringargv)try参数1(from),参数2(to),参数3(宽),参数4(高)Test.saveImageAsJpg(E:/Document/MyPictures/3.gif,c:/6.gif,50,50);catch(Exceptione)e.printStackTrace();方法2:Java代码importjava.io.*;importjava.util.*;importcom.sun.image.codec.jpeg.*;i
14、mportjava.awt.image.*;importjava.awt.*;.*;importjava.applet.*;importjava.sql.*;9.10./缩略图类,/本java类能将jpg图片文件,进行等比或非等比的大小转换。/具体使用方法/s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true)publicclassTesStringInputDir;/输入图路径StringOutputDir;/输出图路径StringInputFileName;/输入图文件名StringOutputFileName;
15、/输出图文件名intOutputWidth=80;/默认输出图片宽intOutputHeight=80;/默认输出图片高intrate=0;booleanproportion=true;/是否等比缩放标记(默认为等比缩放)23.publicTes()/初始化变量InputDir=;OutputDir=;InputFileName=;OutputFileName=;OutputWidth=80;OutputHeight=80;rate=0;34.publicvoidsetInputDir(StringInputDir)this.InputDir=InputDir;38.publicvoidset
16、OutputDir(StringOutputDir)this.OutputDir=OutputDir;42.publicvoidsetInputFileName(StringInputFileName)this.InputFileName=InputFileName;46.publicvoidsetOutputFileName(StringOutputFileName)this.OutputFileName=OutputFileName;50.publicvoidsetOutputWidth(intOutputWidth)this.OutputWidth=OutputWidth;54.publ
17、icvoidsetOutputHeight(intOutputHeight)this.OutputHeight=OutputHeight;58.publicvoidsetW_H(intwidth,intheight)this.OutputWidth=width;this.OutputHeight=height;63.publicStrings_pic()BufferedImageimage;StringNewFileName;67./建立输出文件对象68.Filefile=newFile(OutputDir+OutputFileName);69.FileOutputStreamtempout=
18、null;trytempout=newFileOutputStream(file);catch(Exceptionex)System.out.println(ex.toString();Imageimg=null;Toolkittk=Toolkit.getDefaultToolkit();Appletapp=newApplet();MediaTrackermt=newMediaTracker(app);tryimg=tk.getImage(InputDir+InputFileName);mt.addImage(img,0);mt.waitForID(0);catch(Exceptione)e.
19、printStackTrace();86.if(img.getWidth(null)=-1)System.out.println(cantread,retry!+);returnno;elseintnew_w;intnew_h;if(portion=true)/判断是否是等比缩放./为等比缩放计算输出的图片宽度及高度doublerate1=(double)img.getWidth(null)/(double)OutputWidth+0.1;doublerate2=(double)img.getHeight(null)/(double)OutputHeight+0.1;doubl
20、erate=rate1rate2?rate1:rate2;new_w=(int)(double)img.getWidth(null)/rate);new_h=(int)(double)img.getHeight(null)/rate);elsenew_w=OutputWidth;/输出的图片宽度new_h=OutputHeight;/输出的图片高度BufferedImagebuffImg=newBufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);108.109.Graphicsg=buffImg.createGraphics();110.
21、111.g.setColor(Color.white);112.g.fillRect(0,0,new_w,new_h);113.114.g.drawImage(img,0,0,new_w,new_h,null);115.g.dispose();116.JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(tempout);tryencoder.encode(buffImg);tempout.close();catch(IOExceptionex)System.out.println(ex.toString();returnok;127.publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,StringOutputFileName)/输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版厂房租赁及配套设施租赁及改造合同
- 二零二五年度班轮运输合同模板(含供应链金融)
- 2025版大型企业仓储物流全面承包合作协议书
- 2025版波形护栏安装及道路桥梁安全防护合同
- 二零二五年度保健食品电商平台广告位租赁及合作合同
- 2025版按揭中二手房买卖合同范本:按揭贷款优化服务版
- 2025版车辆保险理赔服务合同
- 二零二五年度板材新产品研发及生产合作合同
- 2025年内蒙古太仆寺旗宝昌第一中学物理高二第二学期期末联考试题含解析
- 四川省成都市高中2025年高一物理第二学期期末联考试题含解析
- 小学生心理健康与辅导(第4版) 课件 第七章 小学生常见心理行为问题与辅导
- 案例库构建与应用-深度研究
- 2025年金融顾问考试试题及答案
- 《南海争端解析》课件
- 《煤矿安全规程》专家解读(详细版)
- 2025年个人资产出售与收购协议书
- 2024建筑光伏一体化应用技术规程
- 叉车理论试题与参考答案
- 《二尖瓣反流》课件
- 2025年度文化旅游区景区管理费收取与运营合同3篇
- 陕西2020-2024年中考英语五年真题汇编教师版-专题04 阅读理解之说明文
评论
0/150
提交评论