版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 楼梯斜面施工方案(3篇)
- 教职工考勤考核制度
- 2026广东广州花都区秀全街乐泉小学招聘临聘教师2人备考题库及1套完整答案详解
- 2026上半年云南事业单位联考云南大理大学招聘备考题库及参考答案详解1套
- 限额领料执行制度
- 2026年临沂蒙阴县部分事业单位公开招聘综合类岗位工作人员备考题库(18名)及1套完整答案详解
- 罕见肿瘤的个体化治疗疗效预测模型构建与应用
- 深圳市社会团体财务制度
- 乡村公社财务制度汇编
- 物业公司财务制度规定
- 壁球裁判试题及答案
- 2025年配音演员保密合同协议
- 网络销售人员培训
- 设备租赁绩效考核与激励方案设计实施方法规定
- 屠宰场现场施工方案
- 摄影摄像直播合同范本
- 2026届天津市南开区九年级物理第一学期期末学业质量监测试题含解析
- 支撑粱施工方案
- 二零二五年度快递运输快递网点加盟合作协议
- 冬季安全驾驶培训
- 医院医保培训课件模板
评论
0/150
提交评论