隨筆-86  評論-767  文章-3  trackbacks-3
          方法1:
          縮略圖只要10行代碼就夠了,前面介紹過N次了.自己不能往前找找嗎?

          Image src = ToolKit.getToolKit().createImage("文件路徑");
          然后先生成一個BufferedImage bi作為畫布.
          BufferedImage bi = new BufferedImage(目標寬, 目標高,BufferedImage.TYPE_INT_RGB);
          得到它的Graphics對象:
          Graphics g = bi.getGraphics();
          然后往這個畫而上畫原圖就行了:
          g.grawImage(src,0,0,目標寬,目標高,null);
          找一個編碼類,如JPEGEncoder,GIFEncoder
          把bi編碼輸出就行了.

          方法2:
          import javax.imageio.ImageIO;
          import javax.imageio.IIOException;
          import java.awt.image.BufferedImage;
          import java.awt.Image;
          import java.io.File;
          import java.awt.image.AffineTransformOp;
          import java.awt.geom.AffineTransform;

          public class Test {

          ??? public static void main (String argv[]) {
          ??????? try {
          ??????????? File fi = new File("C:/1.jpg"); //大圖文件
          ??????????? File fo = new File("C:/2.jpg"); //將要轉換出的小圖文件

          ??????????? AffineTransform transform = new AffineTransform();
          ??????????? BufferedImage bis = ImageIO.read(fi);

          ??????????? int w = bis.getWidth();
          ??????????? int h = bis.getHeight();
          ??????????? double scale = (double)w/h;

          ??????????? int nw = 120;
          ??????????? int nh = (nw * h) / w;
          ??????????? if(nh>120) {
          ??????????????? nh = 120;
          ??????????????? nw = (nh * w) / h;
          ??????????? }

          ??????????? double sx = (double)nw / w;
          ??????????? double sy = (double)nh / h;

          ??????????? transform.setToScale(sx,sy);

          ??????????? AffineTransformOp ato = new AffineTransformOp(transform, null);
          ??????????? BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
          ??????????? ato.filter(bis,bid);
          ??????????? ImageIO.write(bid, "jpeg", fo);
          ??????? } catch(Exception e) {
          ??????????? e.printStackTrace();
          ??????? }
          ??? }
          }
          posted on 2005-01-14 15:07 eamoi 閱讀(5619) 評論(5)  編輯  收藏 所屬分類: JSP/Servlet

          評論:
          # re: [收藏]java生成縮略圖代碼 2005-10-15 01:30 | 鳥不生蛋蛋的地方
          恩,挺有用的功能,收藏了.  回復  更多評論
            
          # re: [收藏]java生成縮略圖代碼 2005-12-13 21:44 | lesky
          好像很耗內存,大圖會溢出,有沒有更好的辦法?求教!  回復  更多評論
            
          # re: [收藏]java生成縮略圖代碼 2005-12-14 09:30 | eamoi
          我在自己的Web系統中使用到了帖子中的代碼,沒有發現樓上說的問題。
          內存:DDR 512M。
          其實不耗內存的說。  回復  更多評論
            
          # re: [收藏]java生成縮略圖代碼 2006-03-21 22:25 | Baiyun
          我6M的附件內存溢出,一時還想不到解決辦法。  回復  更多評論
            
          # re: [收藏]java生成縮略圖代碼 2008-03-06 10:02 | hello
          那確實內存溢出,,有沒有新的解決辦法?  回復  更多評論
            
          主站蜘蛛池模板: 永吉县| 水富县| 沙田区| 咸丰县| 油尖旺区| 凤山县| 神池县| 仙居县| 太仓市| 陕西省| 阜平县| 青冈县| 龙游县| 山东省| 监利县| 青州市| 葫芦岛市| 缙云县| 江华| 太保市| 新竹县| 加查县| 瑞金市| 调兵山市| 城市| 廉江市| 长宁区| 类乌齐县| 南宁市| 辽阳市| 云安县| 天气| 盐源县| 河曲县| 遂昌县| 开封县| 镇安县| 城市| 伊宁市| 兴城市| 古田县|