`
isiqi
  • 浏览: 16464197 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

(转)JAVA生成缩略图

阅读更多

来源: http://wing929.javaeye.com/blog/185508

方法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.FileOutputStream;
  10. publicclassTest{
  11. publicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH){
  12. //targetW,targetH分别表示目标长和宽
  13. inttype=source.getType();
  14. BufferedImagetarget=null;
  15. doublesx=(double)targetW/source.getWidth();
  16. doublesy=(double)targetH/source.getHeight();
  17. //这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
  18. //则将下面的ifelse语句注释即可
  19. if(sx>sy)
  20. {
  21. sx=sy;
  22. targetW=(int)(sx*source.getWidth());
  23. }else{
  24. sy=sx;
  25. targetH=(int)(sy*source.getHeight());
  26. }
  27. if(type==BufferedImage.TYPE_CUSTOM){//handmade
  28. ColorModelcm=source.getColorModel();
  29. WritableRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);
  30. booleanalphaPremultiplied=cm.isAlphaPremultiplied();
  31. target=newBufferedImage(cm,raster,alphaPremultiplied,null);
  32. }else
  33. target=newBufferedImage(targetW,targetH,type);
  34. Graphics2Dg=target.createGraphics();
  35. //smootherthanexlax:
  36. g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
  37. g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy));
  38. g.dispose();
  39. returntarget;
  40. }
  41. publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)
  42. throwsException{
  43. BufferedImagesrcImage;
  44. //Stringex=fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
  45. StringimgType="JPEG";
  46. if(fromFileStr.toLowerCase().endsWith(".png")){
  47. imgType="PNG";
  48. }
  49. //System.out.println(ex);
  50. FilesaveFile=newFile(saveToFileStr);
  51. FilefromFile=newFile(fromFileStr);
  52. srcImage=ImageIO.read(fromFile);
  53. if(width>0||hight>0)
  54. {
  55. srcImage=resize(srcImage,width,hight);
  56. }
  57. ImageIO.write(srcImage,imgType,saveFile);
  58. }
  59. publicstaticvoidmain(Stringargv[]){
  60. try{
  61. //参数1(from),参数2(to),参数3(宽),参数4(高)
  62. Test.saveImageAsJpg("E:/Document/MyPictures/3.gif","c:/6.gif",50,50);
  63. }catch(Exceptione)
  64. {
  65. e.printStackTrace();
  66. }
  67. }
  68. }


方法2:

Java代码 复制代码
  1. importjava.io.*;
  2. importjava.util.*;
  3. importcom.sun.image.codec.jpeg.*;
  4. importjava.awt.image.*;
  5. importjava.awt.*;
  6. importjava.net.*;
  7. importjava.applet.*;
  8. importjava.sql.*;
  9. //缩略图类,
  10. //本java类能将jpg图片文件,进行等比或非等比的大小转换。
  11. //具体使用方法
  12. //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
  13. publicclassTes{
  14. StringInputDir;//输入图路径
  15. StringOutputDir;//输出图路径
  16. StringInputFileName;//输入图文件名
  17. StringOutputFileName;//输出图文件名
  18. intOutputWidth=80;//默认输出图片宽
  19. intOutputHeight=80;//默认输出图片高
  20. intrate=0;
  21. booleanproportion=true;//是否等比缩放标记(默认为等比缩放)
  22. publicTes(){
  23. //初始化变量
  24. InputDir="";
  25. OutputDir="";
  26. InputFileName="";
  27. OutputFileName="";
  28. OutputWidth=80;
  29. OutputHeight=80;
  30. rate=0;
  31. }
  32. publicvoidsetInputDir(StringInputDir){
  33. this.InputDir=InputDir;
  34. }
  35. publicvoidsetOutputDir(StringOutputDir){
  36. this.OutputDir=OutputDir;
  37. }
  38. publicvoidsetInputFileName(StringInputFileName){
  39. this.InputFileName=InputFileName;
  40. }
  41. publicvoidsetOutputFileName(StringOutputFileName){
  42. this.OutputFileName=OutputFileName;
  43. }
  44. publicvoidsetOutputWidth(intOutputWidth){
  45. this.OutputWidth=OutputWidth;
  46. }
  47. publicvoidsetOutputHeight(intOutputHeight){
  48. this.OutputHeight=OutputHeight;
  49. }
  50. publicvoidsetW_H(intwidth,intheight){
  51. this.OutputWidth=width;
  52. this.OutputHeight=height;
  53. }
  54. publicStrings_pic(){
  55. BufferedImageimage;
  56. StringNewFileName;
  57. //建立输出文件对象
  58. Filefile=newFile(OutputDir+OutputFileName);
  59. FileOutputStreamtempout=null;
  60. try{
  61. tempout=newFileOutputStream(file);
  62. }catch(Exceptionex){
  63. System.out.println(ex.toString());
  64. }
  65. Imageimg=null;
  66. Toolkittk=Toolkit.getDefaultToolkit();
  67. Appletapp=newApplet();
  68. MediaTrackermt=newMediaTracker(app);
  69. try{
  70. img=tk.getImage(InputDir+InputFileName);
  71. mt.addImage(img,0);
  72. mt.waitForID(0);
  73. }catch(Exceptione){
  74. e.printStackTrace();
  75. }
  76. if(img.getWidth(null)==-1){
  77. System.out.println("can'tread,retry!"+"<BR>");
  78. return"no";
  79. }else{
  80. intnew_w;
  81. intnew_h;
  82. if(this.proportion==true){//判断是否是等比缩放.
  83. //为等比缩放计算输出的图片宽度及高度
  84. doublerate1=((double)img.getWidth(null))/
  85. (double)OutputWidth+0.1;
  86. doublerate2=((double)img.getHeight(null))/
  87. (double)OutputHeight+0.1;
  88. doublerate=rate1>rate2?rate1:rate2;
  89. new_w=(int)(((double)img.getWidth(null))/rate);
  90. new_h=(int)(((double)img.getHeight(null))/rate);
  91. }else{
  92. new_w=OutputWidth;//输出的图片宽度
  93. new_h=OutputHeight;//输出的图片高度
  94. }
  95. BufferedImagebuffImg=newBufferedImage(new_w,new_h,
  96. BufferedImage.TYPE_INT_RGB);
  97. Graphicsg=buffImg.createGraphics();
  98. g.setColor(Color.white);
  99. g.fillRect(0,0,new_w,new_h);
  100. g.drawImage(img,0,0,new_w,new_h,null);
  101. g.dispose();
  102. JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(tempout);
  103. try{
  104. encoder.encode(buffImg);
  105. tempout.close();
  106. }catch(IOExceptionex){
  107. System.out.println(ex.toString());
  108. }
  109. }
  110. return"ok";
  111. }
  112. publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,
  113. StringOutputFileName){
  114. //输入图路径
  115. this.InputDir=InputDir;
  116. //输出图路径
  117. this.OutputDir=OutputDir;
  118. //输入图文件名
  119. this.InputFileName=InputFileName;
  120. //输出图文件名
  121. this.OutputFileName=OutputFileName;
  122. returns_pic();
  123. }
  124. publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,
  125. StringOutputFileName,intwidth,intheight,
  126. booleangp){
  127. //输入图路径
  128. this.InputDir=InputDir;
  129. //输出图路径
  130. this.OutputDir=OutputDir;
  131. //输入图文件名
  132. this.InputFileName=InputFileName;
  133. //输出图文件名
  134. this.OutputFileName=OutputFileName;
  135. //设置图片长宽
  136. setW_H(width,height);
  137. //是否是等比缩放标记
  138. this.proportion=gp;
  139. returns_pic();
  140. }
  141. publicstaticvoidmain(String[]a){
  142. //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
  143. Tesmypic=newTes();
  144. System.out.println(
  145. mypic.s_pic("E:\Document\MyPictures\",
  146. "E:\Document\MyPictures\",
  147. "topbg-3.gif","3.gif",400,400,true)
  148. );
  149. }
  150. }
分享到:
评论

相关推荐

    java 图片生成缩略图

    在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 Java 中,生成缩略图可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用BufferedImage类 使用BufferedImage类可以实现图片的缩略图...

    java 上传图片生成缩略图

    ### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...

    java生成缩略图类(已经封装好)

    java 生成缩略图类 源代码 (已经封装好)

    java生成缩略图

    根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...

    java图片裁剪和java生成缩略图.pdf

    java图片裁剪和java生成缩略图.pdf

    java生成图片缩略图和二进制文件的工具类

    将图片生成缩略图和转换为二进制的工具类,缩略图大小可调

    java视频生成图片(缩略图)-实例-(指定时间)

    6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...

    java上传图片,处理图片,word转pdf图片缩略图生成

    java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类

    java 生成缩略图

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...

    java生成缩略图的方法示例

    Java 生成缩略图的方法示例 Java 生成缩略图是指使用 Java 语言生成缩略图的过程,这个过程中涉及到各种图形处理技巧。下面将详细介绍 Java 生成缩略图的方法示例。 图像处理基础 在 Java 中,图像处理是通过使用...

    java生成缩略图.pdf

    在Java中生成缩略图是一项常见的任务,尤其是在开发Web应用或者需要处理用户上传图片的系统中。这个过程涉及对原始图像进行重新尺寸调整,以创建一个较小的版本,通常用于预览或节省存储空间。在提供的代码片段中,...

    JAVA获取视频缩略图

    在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...

    基于Springmvc的上传图片并生成缩略图

    生成缩略图通常可以借助于图像处理库,如Java的`javax.imageio.ImageIO`或第三方库如Apache Commons Imaging。以下是一个简单的示例: ```java try { BufferedImage originalImage = ImageIO.read(file....

    生成缩略图

    java 生成缩略图 java 生成缩略图 java 生成缩略图java 生成缩略图java 生成缩略图

    java生成缩略图.zip

    在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...

    JSP上传图片并生成缩略图

    在这个特定的场景中,"JSP上传图片并生成缩略图"是一个常见的功能需求,尤其是在开发包含用户交互和多媒体内容的Web应用时。下面我们将详细探讨这一技术实现的关键知识点。 首先,**上传组件**是Web应用中用于接收...

    java批量上传图片并生成缩略图

    在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...

    java图片生成缩略图

    /** * 压缩图片方法 * * @param oldFile 将要压缩的图片 * @param width 压缩宽 * @param height 压缩高 * @param quality 压缩清晰度 建议为1.0 * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名...

    java生成高清缩略图不丢真,java压缩图片

    网上找的缩略图生成方法都不够清晰,于是决定自己研究和改进生成缩略图方法。此方法压缩后的图片小,清晰度高,压缩速度快。5000张图片大概抽根烟的功夫就压缩完了。高清的哦。各种参数都是可配的,方便移植到自己...

    java大图生成缩略图。。。。

    java大图生成缩略图。。。。。。。。。。。。

Global site tag (gtag.js) - Google Analytics