隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          使用Java等比例縮放圖像

          本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!

              縮放圖像的基本原理是創(chuàng)建一個(gè)目標(biāo)大小的畫(huà)布,然后讀取源圖像,并將該圖像繪制這個(gè)畫(huà)布上。為了使程序通用,源圖像和縮放后的目標(biāo)圖像應(yīng)用分別使用InputStream和OutputStream來(lái)表示,代碼如下:
              public static void scaleImage(InputStream imgInputStream,
                      OutputStream imgOutputStream, 
          int scale)
              {
                  
          try
                  {

                      Image src 
          = javax.imageio.ImageIO.read(imgInputStream);
                      
          int width = (int) (src.getWidth(null* scale / 100.0);
                      
          int height = (int) (src.getHeight(null* scale / 100.0);
                      BufferedImage bufferedImage 
          = new BufferedImage(width, height,
                              BufferedImage.TYPE_INT_RGB);

                       bufferedImage.getGraphics().drawImage(
                              src.getScaledInstance(width, height, Image.SCALE_SMOOTH),
                              
          00null);
                      JPEGImageEncoder encoder 
          = JPEGCodec
                              .createJPEGEncoder(imgOutputStream);
                      encoder.encode( bufferedImage);

                  }
                  
          catch (IOException e)
                  {
                      e.printStackTrace();
                  }
              }

              其中scale參數(shù)表示縮放比例,1至100,當(dāng)然,也可以大于100,那就是放大圖像了。但要注意,放得太大會(huì)失真的。
              當(dāng)然,也可以重構(gòu)scaleImage方法,使其可以接收?qǐng)D像文件名,代碼如下:

              public static void scaleImage(String imgSrc, String imgDist, int scale)
              {
                  
          try
                  {
                      File file 
          = new File(imgSrc);
                      
          if (!file.exists())
                      {
                          
          return;
                      }
                      InputStream is 
          = new FileInputStream(file);
                      OutputStream os 
          = new FileOutputStream(imgDist);
                      scaleImage(is, os, scale);
                      is.close();
                      os.close();
                  }
                  
          catch (Exception e)
                  {

                  }
              }

              下面的代碼按15%縮放
          scaleImage("E:\\pictures\\test.jpg""e:\\test1.jpg"15);





          Android開(kāi)發(fā)完全講義(第2版)(本書(shū)版權(quán)已輸出到臺(tái)灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱(chēng):李寧_Lining

          posted on 2010-04-16 15:11 銀河使者 閱讀(3289) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): java 原創(chuàng)

          評(píng)論

          # re: 使用Java等比例縮放圖像  回復(fù)  更多評(píng)論   

          dpi自動(dòng)變成96了,對(duì)于圖片質(zhì)量要求高的。
          可以參考一下這里:
          http://www.java-forums.org/java-applets/13546-image-resizing-dpi.html
          2010-04-16 16:17 | rox

          # re: 使用Java等比例縮放圖像  回復(fù)  更多評(píng)論   

          源圖像和縮放后的目標(biāo)圖像應(yīng)用分別使用InputStream和OutputStream來(lái)表示
          2010-04-17 11:36 | 俏物悄語(yǔ)

          # re: 使用Java等比例縮放圖像  回復(fù)  更多評(píng)論   

          當(dāng)有大量圖片的時(shí)候,此方法性能可能會(huì)是個(gè)障礙。
          2010-04-18 01:21 | .Sun

          # re: 使用Java等比例縮放圖像  回復(fù)  更多評(píng)論   

          環(huán)境按時(shí)打算的
          主站蜘蛛池模板: 武清区| 怀化市| 菏泽市| 庆阳市| 诸城市| 武安市| 潮州市| 嘉善县| 怀仁县| 武夷山市| 浠水县| 泸州市| 华坪县| 巫山县| 皮山县| 嘉兴市| 明光市| 邹城市| 米易县| 马尔康县| 潼南县| 都昌县| 葵青区| 大英县| 林口县| 正蓝旗| 孟连| 肇庆市| 南开区| 罗田县| 车致| 长沙市| 鸡泽县| 蒙城县| 金塔县| 离岛区| 甘孜| 安义县| 龙泉市| 德州市| 英山县|