版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年度建筑材料加工生产合同范本4篇
- 专业出国留学辅导协议样本(2024)版B版
- 2025年度医疗器械紧急运输服务协议3篇
- 2025年度数据中心场地租赁合作协议4篇
- 2025年度食品试用及消费者满意度调查合同4篇
- 2025年度绿色建筑设计与施工一体化服务合同4篇
- 2025年度市政基础设施改造铲车租赁协议书4篇
- 二零二四全新建筑工程施工联营协议书下载3篇
- 2024重庆离婚协议书标准范文
- 二婚再婚2024年度财产共有协议
- 2024年黑河嫩江市招聘社区工作者考试真题
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 蓝色3D风工作总结汇报模板
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 2024年江苏省导游服务技能大赛理论考试题库(含答案)
- 2024年中考英语阅读理解表格型解题技巧讲解(含练习题及答案)
- 新版中国食物成分表
- 浙江省温州市温州中学2025届数学高二上期末综合测试试题含解析
- 2024年山东省青岛市中考生物试题(含答案)
- 保安公司市场拓展方案-保安拓展工作方案
评论
0/150
提交评论