隨筆-60  評論-35  文章-15  trackbacks-0
          import ?java.io. * ;
          import ?java.awt. * ;
          import ?java.awt.image. * ;
          import ?com.sun.image.codec.jpeg. * ;
          /**
          ?*
          ?*?<p>Title:?Thumbnail</p>
          ?*
          ?*?<p>Description:?Picture?Thumbnail</p>
          ?*
          ?*?<p>Copyright:?Copyright?(c)?54powerman@163.com?2005</p>
          ?*
          ?*?<p>Company:?
          http://blog.sina.com.cn/u1055000490 </p>
          ?*
          ?*?
          @author ?54powerman
          ?*?
          @version ?1.0
          ?
          */

          public ? class ?Thumbnail? {
          ??
          private ?String?srcFile;
          ??
          private ?String?destFile;
          ??
          private ? int ?width;
          ??
          private ? int ?height;
          ??
          private ?Image?img;
          ??
          public ? static ? void ?main(String[]?args)? throws ?Exception? {
          ????Thumbnail?thum?
          = ? new ?Thumbnail( " Winter.png " );
          ????thum.resizeFix(
          500 ,? 300 );
          ??}

          ??
          /**
          ???*?構造函數
          ???*?
          @param ?fileName?String
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ?Thumbnail(String?fileName)? throws ?IOException? {
          ????File?_file?
          = ? new ?File(fileName);? // 讀入文件
          ???? this .srcFile? = ?_file.getName();
          ????
          this .destFile? = ? this .srcFile.substring( 0 ,? this .srcFile.lastIndexOf( " . " ))? +
          ????????
          " _s.jpg " ;
          ????img?
          = ?javax.imageio.ImageIO.read(_file);? // 構造Image對象
          ????width? = ?img.getWidth( null );? // 得到源圖寬
          ????height? = ?img.getHeight( null );? // 得到源圖長
          ??}

          ??
          /**
          ???*?強制壓縮/放大圖片到固定的大小
          ???*?
          @param ?w?int?新寬度
          ???*?
          @param ?h?int?新高度
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ? void ?resize( int ?w,? int ?h)? throws ?IOException? {
          ????BufferedImage?_image?
          = ? new ?BufferedImage(w,?h,
          ?????????????????????????????????????????????BufferedImage.TYPE_INT_RGB);
          ????_image.getGraphics().drawImage(img,?
          0 ,? 0 ,?w,?h,? null );? // 繪制縮小后的圖
          ????FileOutputStream?out? = ? new ?FileOutputStream(destFile);? // 輸出到文件流
          ????JPEGImageEncoder?encoder? = ?JPEGCodec.createJPEGEncoder(out);
          ????encoder.encode(_image);?
          // 近JPEG編碼
          ????out.close();
          ??}

          ??
          /**
          ???*?按照固定的比例縮放圖片
          ???*?
          @param ?t?double?比例
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ? void ?resize( double ?t)? throws ?IOException? {
          ????
          int ?w? = ?( int )?(width? * ?t);
          ????
          int ?h? = ?( int )?(height? * ?t);
          ????resize(w,?h);
          ??}

          ??
          /**
          ???*?以寬度為基準,等比例放縮圖片
          ???*?
          @param ?w?int?新寬度
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ? void ?resizeByWidth( int ?w)? throws ?IOException? {
          ????
          int ?h? = ?( int )?(height? * ?w? / ?width);
          ????resize(w,?h);
          ??}

          ??
          /**
          ???*?以高度為基準,等比例縮放圖片
          ???*?
          @param ?h?int?新高度
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ? void ?resizeByHeight( int ?h)? throws ?IOException? {
          ????
          int ?w? = ?( int )?(width? * ?h? / ?height);
          ????resize(w,?h);
          ??}

          ??
          /**
          ???*?按照最大高度限制,生成最大的等比例縮略圖
          ???*?
          @param ?w?int?最大寬度
          ???*?
          @param ?h?int?最大高度
          ???*?
          @throws ?IOException
          ???
          */

          ??
          public ? void ?resizeFix( int ?w,? int ?h)? throws ?IOException? {
          ????
          if ?(width? / ?height? > ?w? / ?h)? {
          ??????resizeByWidth(w);
          ????}

          ????
          else ? {
          ??????resizeByHeight(h);
          ????}

          ??}

          ??
          /**
          ???*?設置目標文件名
          ???*?setDestFile
          ???*?
          @param ?fileName?String?文件名字符串
          ???
          */

          ??
          public ? void ?setDestFile(String?fileName)? throws ?Exception? {
          ????
          if ?( ! fileName.endsWith( " .jpg " ))? {
          ??????
          throw ? new ?Exception( " Dest?File?Must?end?with?\ " .jpg\ " . " );
          ????}

          ????destFile?
          = ?fileName;
          ??}

          ??
          /**
          ???*?獲取目標文件名
          ???*?getDestFile
          ???
          */

          ??
          public ?String?getDestFile()? {
          ????
          return ?destFile;
          ??}

          ??
          /**
          ???*?獲取圖片原始寬度
          ???*?getSrcWidth
          ???
          */

          ??
          public ? int ?getSrcWidth()? {
          ????
          return ?width;
          ??}

          ??
          /**
          ???*?獲取圖片原始高度
          ???*?getSrcHeight
          ???
          */

          ??
          public ? int ?getSrcHeight()? {
          ????
          return ?height;
          ??}

          }
          posted on 2006-04-04 17:06 Q系列類、方法、變量…… 閱讀(1587) 評論(1)  編輯  收藏 所屬分類: 網上工具代碼

          評論:
          # re: Java縮略圖類 2008-07-21 22:43 | kangwei
          謝謝!我還沒有運行  回復  更多評論
            
          主站蜘蛛池模板: 福建省| 昌平区| 会同县| 南京市| 南雄市| 河源市| 卢湾区| 惠州市| 庆安县| 正阳县| 绥棱县| 梨树县| 东兴市| 镇远县| 长顺县| 永济市| 龙胜| 灵璧县| 大余县| 苍南县| 本溪市| 东莞市| 高要市| 汉川市| 湖口县| 舒城县| 庄浪县| 德庆县| 石狮市| 太保市| 八宿县| 成武县| 辽阳市| 平塘县| 城市| 象山县| 黄石市| 会宁县| 鹤岗市| 九龙坡区| 临朐县|