当前位置:  技术问答>java相关

请教图片上传中的改变图片大小的问题!!急!!!

    来源: 互联网  发布时间:2015-08-26

    本文导语:  我在应用中需要解决一个问题,就是如何将上传的图片自动改成小的缩略图??   请求各位高手给于解决的良方!万分感激!! | import java.io.File; import java.awt.image.BufferedImage; import java.awt.Image; import...

我在应用中需要解决一个问题,就是如何将上传的图片自动改成小的缩略图??

  请求各位高手给于解决的良方!万分感激!!

|
import java.io.File;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Graphics2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.RescaleOp;
import javax.imageio.ImageIO;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.geom.AffineTransform;

public class ThumbNail{


String fromdir="";
String todir="";
String imgfile="";
String sysimgfile="";
String ext="jpg"; //默认图片格式
int size=0;
  public ThumbNail(){}
  public boolean CreateThumbnail() throws Exception
  {

       double Ratio=0.0;
       BufferedImage Bi=null;
       Image Itemp=null;
       BufferedImage img11=null;

       File F = new File(fromdir,imgfile);
       if (!F.isFile())
           throw new Exception(F+" is not image file error in CreateThumbnail!");

       File ThF = new File(todir,sysimgfile+"."+ext);

       try{
           Bi = ImageIO.read(F);
           
           int BW=(int)(size*Bi.getWidth()/Bi.getHeight());
           int BH=size;
           Itemp = Bi.getScaledInstance (BW,BH,Bi.SCALE_SMOOTH);
           BufferedImage BImg=null;

           try{
               if (Bi.getHeight()>size){
                   Ratio =(double)(size)/Bi.getHeight();
                }
               AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
               BImg=op.filter(Bi, null);
               
           }catch(Exception ex){
               BImg=new BufferedImage(Itemp.getWidth(null),Itemp.getHeight(null),BufferedImage.TYPE_INT_RGB);
               Graphics2D g2= BImg.createGraphics();
               g2.drawImage(Itemp,0,0,null);
           }

            ImageIO.write((BufferedImage)BImg, ext, ThF);
         }catch (Exception ex) {
            this.saveJust();
            System.out.println(" ImageIo.write error in CreatThum: "+ex.getMessage());
            return false;
         }
         return (true);
  }
  public void saveJust()
  {
    try{
     File F = new File(fromdir,imgfile);
     if (!F.isFile())
        throw new Exception(F+" is not image file error in CreateThumbnail!");
     File ThF = new File(todir,imgfile);
     FileInputStream fis=new FileInputStream(F);
     FileOutputStream fos=new FileOutputStream(ThF);
     byte[] b = new byte[255];
     int bRead=0;
     while((bRead=fis.read(b))>-1)
       fos.write(b,0,bRead);
     fos.close();
     fis.close();
    }catch(Exception e)
    {
    }
      
  }
  public void setfromdir(String str)
  {
    fromdir=str;
  }
  public void settodir(String str)
  {
    todir=str;
  }
  public void setimgfile(String str)
  {
    imgfile=str;
  }
  public void setsysimgfile(String str)
  {
     for(int i=str.length()-1;i>=0;i--)
       if(str.charAt(i)=='.'){
          sysimgfile=str.substring(0,i);
          i=-1;
          return;
       }
     sysimgfile=str;
  }
  public void setsize(int s)
  {
     size=s;
  }
  public void setext(String str)
  {
     ext=str;
  }

  /*public static void main(String args[])
  {
     ThumbNail tn=new ThumbNail();
     tn.setsize(100);
     tn.setfromdir("d:/javaTest/");
     tn.setimgfile("abc.jpg");
     tn.settodir("d:/");
     tn.setsysimgfile("trytr");
     try{
        if(tn.CreateThumbnail())
          System.out.println("succed");
     }catch(Exception e){
        System.out.println("failed to create the thumbnail");

     }
  }*/
}

认真看吧

    
 
 

您可能感兴趣的文章:

  • 请教,从数据库查看图片地,是否可以不下载到本地?
  • 请教:怎么用JSP把图片上传到服务器SQL Server数据库?
  • 请教:在播放声音的同时滚动图片怎么处理好?
  • 高分请教高手:有没有人在Linux下玩过把网页转化成图片
  • 请教PNG图片叠加到JPG上的问题
  • 请教啦,如何把数据库中blob字段存储的图片在jsp页面中显示出来?
  • 请教如何用Xlib显示图片(JPG,等)
  • 请教/var/adm/wtmpx文件的最大大小是多少?是一个数值还是一个与文件系统的比值?是如何设置大小限制的?谢谢!!
  • 请教交换区大小配置
  • 请教,如何修改在虚拟机vmware中安装的linux的ramdisk大小?
  • 怎么改变鼠标图像的大小,请教
  • 请教,请教,,,一定要看!!一定要看!! iis7站长之家
  • 请教:sed替换如何不区分大小写?
  • 如何使用gcc不对文件名大小写敏感哈,请教各路神仙~
  • 请教有关samba共享名大小写的问题
  • 请教,如何比较2个文件的修改时间的大小
  • 请教:linux下如何检测并控制进程的内存大小?
  • 我有一个3CD的REDHAT7.2,请教如果完全安装,/,/root,/user,/home怎么分配大小?
  • 请教:使用mkswap /dev/hdaX 之后可使用任意数字来规定swap分区大小
  • 200分请教,如何知道数据包的大小
  • 请教:线程栈的大小问题
  • 新手请教高手在linux上用c写结构体时是不是有大小限制?如何解决?
  • 请教一个关于文件大小和block之间对应的问题
  • 请教关于TCP窗口大小的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3