阿敏总司令
阿敏总司令的公告
三等功
俞黎敏
阿敏总司令
来自:福建莆田@广州
最近评论
jojoyba:同意, 我就贴错过上下联, 汗啊

不过没有以前小的时候全家写春联的时候好玩儿了, 虽然我从来都不写(那时候还不会写字呢)
yd1221:ǒu lái nǐ de dì pán cǎi cǎi ,hē hē ,xī wàng yě dào wǒ de dì pán zhuǎn zhuǎn ɑ !
偶 来 你 的 地 盘 踩 踩 ,呵 呵 ,希 望 也 到 我 的 地 盘  转  转 啊 !



 — 快典网( http://kdd.cc/ )自动注音
jamesqiu:花点时间学习gvim,这是值得的。
007pro:je上核心人员都是极端务实的人群,有时候我觉得怎么可以这样,je的核心会觉的说,最好这样~就是这么简单。
我也是被隐藏扣分之后才明白,所以即便是博客上也对这类事情不做评述,虽然我是很支持你的
所以即便象俞兄这样的用户也不会有特权的,我记得老庄很久以前叹息说多亏有自己的空间,的确如此。
oneyear2008:我刚接触java,这对于我来说是一个很好的学习步骤!谢谢!
文章分类
收藏
    相册
    1大学的我
    2部队当兵
    3生活相片
    CSDN好友
    【HongSoft@业务整合】(RSS)
    axman
    Java憩园
    jini李日贵
    lizongbo
    zxhong(RSS)
    椅子(HERO2008第三会场主持人)
    用耳朵去聆听,用心来感受
    苏酩的Blog空间
    超越黎明(RSS)
    银狐999(RSS)
    青润心情(RSS)
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 写了一个实用的图像放大缩小程序,但是动画GIF转换后不会显示了,只有第一帧收藏

    新一篇: Windows下的tail一二三:tail、BareTail、WinTail | 旧一篇: 《互联网领域Java从来就不是主流》一个完全错误的标题!炒作短时间带来了流量,却损害了作者的声誉,推荐人的信誉,以及读者对于网站的期待。

    写了一个实用的图像放大缩小程序,但是动画GIF转换后不会显示了,只有第一帧
    代码如下,有没做过GIF转换的,提提建议一下,谢谢。 

    import java.awt.Canvas;
    import java.awt.Component;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.AreaAveragingScaleFilter;
    import java.awt.image.BufferedImage;
    import java.awt.image.FilteredImageSource;
    import java.io.File;
    import java.util.Arrays;
    import javax.imageio.ImageIO;
    import org.apache.log4j.Logger;
     
    /**
     *一个实用的图像放大缩小程序
     *
     *@authorYuLimin
     */
    publicclass ZoomImage
    {
        privatestaticfinal Logger logger = Logger.getLogger(ZoomImage.class);
        privatestatic Component component = new Canvas();
        // ".pcx","tga",".tif"这三种格式目前还不支持;
        // 这些定义的格式经过我测试过是可以支持的。
        privatestatic String[] imageFormatArray = new String[]{".jpg",".jpeg",".gif",".png",".bmp"};
     
        /**
         *测试用例
         *
         *@paramargs
         *@throwsException
         */
        publicstaticvoid main(String[] args) throws Exception
        {
           ZoomImage zoomImage = new ZoomImage();
           zoomImage.listFormt();

       // 缩小四倍  

       zoomImage.zoom("E:/图片/城市风光",0.25,false);  

       // 放大四倍  

       zoomImage.zoom("E:/图片/自然风光",4,false);

        }
     
        /**
         *查看图像I/O库所支持的图像格式有哪些格式
         */ 
        publicvoid listFormt()
        {
           String readerMIMETypes[] = ImageIO.getReaderMIMETypes();
           String writerMIMETypes[] = ImageIO.getWriterMIMETypes();
           String readerFormatNames[] = ImageIO.getReaderFormatNames();
           String writerFormatNames[] = ImageIO.getWriterFormatNames();
           if(logger.isInfoEnabled())
           {
               logger.info("ReaderMIMETypes:" + Arrays.asList(readerMIMETypes));
               logger.info("WriterMIMETypes:" + Arrays.asList(writerMIMETypes));
               logger.info("ReaderFormatNames:" + Arrays.asList(readerFormatNames));
               logger.info("WriterFormatNames:" + Arrays.asList(writerFormatNames));
           }
        }
     
        /**
         *校验图像文件的格式是否可以进行缩放
         *
         *@paramfileName
         *@return
         */
        publicboolean verifyImageFormat(String fileName)
        {
           boolean result = false;
           for(int i = 0;i < imageFormatArray.length;i++)
           {
               if(fileName.toLowerCase().lastIndexOf(imageFormatArray[i]) == (fileName.length() - imageFormatArray[i].length()))
               {
                  result = true;
                  break;
               }
           }
           return result;
        }
     
        /**
         *将目录下的所有图像进行放大缩小
         *
         *@paramstrDir图像的目录
         *@paramzoomRatio放大缩小的倍率
         *@paramrebuild是否重新创建,即已经存在的图像是否覆盖重建
         *@throwsException
         */
        publicvoid zoom(String strDir,double zoomRatio,boolean rebuild) throws Exception
        {
           File fileDir = new File(strDir);
           if(!fileDir.exists())
           {
               logger.warn("Not exist:" + strDir);
               return;
           }
           String dirTarget = strDir + "/Zoom" + zoomRatio;
           File fileTarget = new File(dirTarget);
           if(!fileTarget.exists())
           {
               fileTarget.mkdir();
           }
           File[] files = fileDir.listFiles();
           StringBuilder stringBuilder = new StringBuilder();
           for(int i = 0;i < files.length;i++)
           {
               String fileFullName = files[i].getCanonicalPath();
               String fileShortName = files[i].getName();
               if(!new File(fileFullName).isDirectory())// 排除二级目录,如果想就再递归一次,这里省略
               {
                  if(verifyImageFormat(fileShortName))
                  {
                      if(logger.isInfoEnabled())
                      {
                         logger.info("Begin Zoom:" + fileFullName);
                      }
                      stringBuilder = new StringBuilder();
                      stringBuilder.append(dirTarget).append("/").append(fileShortName);
                      if(!new File(stringBuilder.toString()).exists() || rebuild)
                      {
                         try
                         {
                             createZoomSizeImage(fileFullName,stringBuilder.toString(),zoomRatio);
                         }
                         catch(Exception e)
                         {
                             logger.error("createZoomSizeImage Error:" + fileFullName,e);
                         }
                      }
                      if(logger.isInfoEnabled())
                      {
                         logger.info("End Zoom:" + fileFullName);
                      }
                  }
                  else
                  {
                      logger.warn("Can't Zoom:" + fileFullName);
                  }
               }
           }
        }
     
        /**
         *按比例进行放大缩小图像,zoomRatio=1为原大,zoomRatio>1为放大,zoomRatio< 1 为缩小
         *
         *@paramfileName
         *@paramfileNameTarget
         *@paramzoomRatio
         *@throwsException
         */
        publicvoid createZoomSizeImage(String fileName,String fileNameTarget,double zoomRatio) throws Exception
        {
           Image image = ImageIO.read(new File(fileName));
           int width = new Double(image.getWidth(null) * zoomRatio).intValue();
           int height = new Double(image.getHeight(null) * zoomRatio).intValue();
           AreaAveragingScaleFilter areaAveragingScaleFilter = new AreaAveragingScaleFilter(width,height);
           FilteredImageSource filteredImageSource = new FilteredImageSource(image.getSource(),areaAveragingScaleFilter);
           BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
           Graphics graphics = bufferedImage.createGraphics();
           graphics.drawImage(component.createImage(filteredImageSource),0,0,null);
           ImageIO.write(bufferedImage,"JPEG",new File(fileNameTarget));
        }
    }
     

    发表于 @ 2007年07月07日 10:52:00|评论(loading...)|编辑

    新一篇: Windows下的tail一二三:tail、BareTail、WinTail | 旧一篇: 《互联网领域Java从来就不是主流》一个完全错误的标题!炒作短时间带来了流量,却损害了作者的声誉,推荐人的信誉,以及读者对于网站的期待。

    评论

    #bruce_luo 发表于2007-07-31 14:18:00  IP: 211.143.246.*
    建议用Graphics2D处理 ,失真率要小很多!其它的没有看!
    #wwwtom 发表于2007-09-06 11:07:05  IP: 219.143.157.*
    唉~这样的代码也贴出来,真是有损声望啊
    #diggywang 发表于2007-09-07 22:11:22  IP: 60.186.18.*
    如果是能有效控制内存,什么样的代码我也不介意
    #hechangmin 发表于2007-09-28 23:41:55  IP: 219.131.196.*
    后悔,我刚才给网友推荐的那本CSS书了。看这个程序,满稚嫩的。

    还把blog开到到处,重要的还出书。我想一般人是无可厚非的。但出书者例外,哪怕是翻译。

    够资历了??(我不够,我承认。)对代码没有责任感!对问题没有追究精神。万一读者有个疑问什么的,你能行吗?
    #YuLimin 发表于2007-09-29 08:59:21  IP: 210.21.48.*
    1、自己书都没有看到就给别人推荐?这是负责任的态度的表现吗?我也不希望有人没有真正看过我翻译或者写的书就向别人去推荐,这样对三者都是不负责任的;

    2、Blog开到到处,请我我开到哪里有影响你了利益了吗?有得罪你了吗?出书者与翻译者都有可能出错,但是希望读者能够直接地指出来,出书者与翻译者都会进行改正的,我给别人进行讲座的时候十二分强调,我所讲的内容不一样都是正确的,只是拿出来进行交流,大家一起交流才能提交,有错误的一起修正,这样才是目的;

    3、你够不够历是你的事,我也无法去评价你的资历。我对代码有没有责任感也不是你说了算的,你可以认真看看我博客里是怎么写的,然后再说。这个程序只是自己在刻录备份图像文件时, 因为太多、太大而刚好不能刻录在一张CD上,于是我想来缩小一下,就自己写了一个,主要想转JPG,在刻录的过程中,于是就想加些转换的格式,于是碰到.gif的问题。我的代码有问题你可以直接指出来,为何不呢?这样我和今后有需要的人才会谢谢你。

    BTW:对这样的吃不到葡萄说葡萄酸的挑衅而十二分的不宵:)
    #YuLimin 发表于2007-09-29 09:02:02  IP: 210.21.48.*
    看了一下你的博客:

    这个是你转的吧
    http://blog.csdn.net/hechangmin/archive/2007/02/06/1503126.aspx

    但是为何没有原文的链接呢?

    说明了什么呢?
    #jianfenglin 发表于2007-09-29 10:52:05  IP: 59.172.76.*
    诸位程序员真是被“代码”给冲昏头脑了,代码不是为了追求复杂,而是为了实用,能够满足需求就OK了。如果我问你们“1+1=?”你们会毫不犹豫地(除了喜欢深究为什么等于2的"疯子"或者不知道答案的傻子)回答是“2”。可是我不能因为你们回答了这么简答的问题而说你没水平嘛!真是的,我最看不惯hechangmin 的批评方式了,没看过书,居然还瞎说!完全不符合一个程序员应该具备的认真的态度。这个CSS那本书如果不是好书,就不会获得大奖,如果说不适合您这个“高手”,那也是无所谓的,毕竟这个世界高手就是恐龙了嘛,快灭绝了!应该把您放到博物馆去!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 阿敏总司令