青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
1. Bilinear
2. BiCubic
3. Area_Average
4. Progressive Bilinear
當圖片縮小到原圖的一半以下時,bilinear的效果就不好了,再小下去,bicubic的也不夠好,最好的效果是area_average算法,但是這個需要花太多的時間,可以使用改進過的bilinear算法,效果跟area average差不多,速度在bilinear和bicubic之間,但是當圖片非常大,綻放到非常小時,花的時間比bicubic多得多,但是比area average少得多,效果與area average差不多,還是不錯的

Progressive Bilinear Scaling

We know that a significant problem with the quality of the bilinear approach occurs when the downscale is by more than 50 percent. So what if we compen- sated for that problem by scaling iteratively toward the final size, scaling down by exactly 50 percent each time until the final iteration, when we scale by 50 percent or less? Then we would account for all of the pixels along the way that should figure into the final image. 

    // 縮小圖片,縮小時可以使用改進過的bilinear, bicubic插值算法

    // 但是轉換透明圖片時如果使用單緩沖區會出問題,這時每次都要創建一個緩沖區才可以

    public static BufferedImage getFasterDownScaledInstance(BufferedImage img,

                                                            int targetWidth,

                                                            int targetHeight,

                                                            Object hint,

                                                            boolean progressive) {

        int type = (img.getTransparency() == Transparency.OPAQUE) ? BufferedImage.TYPE_INT_RGB

                : BufferedImage.TYPE_INT_ARGB;

        BufferedImage ret = (BufferedImage) img;

        BufferedImage scratchImage = null;

        Graphics2D g2d = null;

        int w = 0, h = 0;

        int prevW = ret.getWidth();

        int prevH = ret.getHeight();


        if (progressive) {

            // Use multistep technique: start with original size,

            // then scale down in multiple passes with drawImage()

            // until the target size is reached

            w = img.getWidth();

            h = img.getHeight();

        } else {

            // Use one-step technique: scale directly from original

            // size to target size with a single drawImage() call

            w = targetWidth;

            h = targetHeight;

        }


        do {

            if (targetWidth < img.getWidth() && progressive && w > targetWidth) {

                // 如果是縮小,寬縮小為原來的一半

                w >>>= 1;

                w = (w < targetWidth) ? targetWidth : w;

            } else {

                w = targetWidth;

            }


            if (targetHeight < img.getHeight() && progressive && h > targetHeight) {

                // 如果是縮小,高縮小為原來的一半

                h >>>= 1;

                h = (h < targetHeight) ? targetHeight : h;

            } else {

                h = targetHeight;

            }


            if (scratchImage == null) {

                // Use a single scratch buffer for all iterations

                // and then copy to the final, correctly sized image before

                // returning

                scratchImage = new BufferedImage(w, h, type);

                g2d = scratchImage.createGraphics();

            } else if (type == BufferedImage.TYPE_INT_ARGB && scratchImage != null && g2d != null) {

                // 透明圖片不能使用單緩存

                g2d.dispose();

                scratchImage = new BufferedImage(w, h, type);

                g2d = scratchImage.createGraphics();

            }


            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, hint);

            g2d.drawImage(ret, 0, 0, w, h, 0, 0, prevW, prevH, null);

            prevW = w;

            prevH = h;

            ret = scratchImage;

        } while (w != targetWidth || h != targetHeight);


        if (g2d != null) {

            g2d.dispose();

        }


        // If we used a target size, the results into it

        if (targetWidth != ret.getWidth() || targetHeight != ret.getHeight()) {

            scratchImage = new BufferedImage(targetWidth, targetHeight, type);

            g2d = scratchImage.createGraphics();

            g2d.drawImage(ret, 0, 0, null);

            g2d.dispose();

            ret = scratchImage;

        }

        return ret;

    }

posted on 2011-01-09 18:20 逛奔的蝸牛 閱讀(4283) 評論(0)  編輯 收藏 引用 所屬分類: Java
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩在线观看一区二区| 欧美精品一区二区视频| 国产亚洲va综合人人澡精品| 久久成人国产| 久久精品理论片| 亚洲欧洲精品成人久久奇米网| 亚洲国产精品第一区二区| 欧美激情在线免费观看| 亚洲制服av| 欧美中文字幕视频在线观看| 亚洲电影有码| a4yy欧美一区二区三区| 国内揄拍国内精品久久| 亚洲人成高清| 国产欧美69| 亚洲激情中文1区| 国产精品一国产精品k频道56| 久久野战av| 欧美日韩在线一区二区| 久久久亚洲国产天美传媒修理工| 欧美激情欧美激情在线五月| 午夜伦欧美伦电影理论片| 老司机aⅴ在线精品导航| 亚洲天堂免费观看| 久久综合综合久久综合| 亚洲欧美日韩综合一区| 麻豆成人综合网| 亚洲欧美在线磁力| 欧美成年视频| 久久夜色精品| 国产精品免费aⅴ片在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美日韩综合视频网址| 欧美激情一二三区| 国产综合色在线| 亚洲一二三区在线| 亚洲视频网站在线观看| 欧美国产在线电影| 另类图片国产| 国产综合色一区二区三区| 在线亚洲免费| 一本久道久久综合中文字幕| 久久手机免费观看| 久久久久久欧美| 国产精品推荐精品| 一本色道久久综合一区| 亚洲乱码国产乱码精品精天堂 | 麻豆91精品| 国产性色一区二区| 亚洲欧美在线一区二区| 亚洲综合另类| 国产精品久久久久毛片软件| 日韩视频免费在线观看| 日韩视频在线观看国产| 欧美电影在线免费观看网站| 欧美va亚洲va香蕉在线| 伊人久久婷婷色综合98网| 欧美在线综合| 裸体丰满少妇做受久久99精品| 国语自产精品视频在线看一大j8| 欧美一区二区在线| 久久久久久久综合| 一区二区在线观看av| 久久久久国产精品麻豆ai换脸| 看欧美日韩国产| 亚洲二区在线| 欧美激情中文字幕乱码免费| 亚洲精品乱码久久久久久久久| 一区二区欧美日韩视频| 欧美午夜精品久久久久久久| 亚洲午夜精品国产| 久久激情五月激情| 亚洲第一成人在线| 欧美精品网站| 亚洲午夜久久久| 久久久福利视频| 亚洲国产精品v| 欧美日韩国内| 亚洲一区自拍| 蜜桃伊人久久| 亚洲视频中文字幕| 国产午夜精品全部视频在线播放| 久久久久久**毛片大全| 亚洲黄色视屏| 亚洲欧洲av一区二区三区久久| 国产亚洲成人一区| 欧美xxx在线观看| 这里只有精品视频在线| 久久综合伊人77777| 夜夜嗨av一区二区三区网站四季av| 欧美日韩精品一区视频| 欧美一区二区三区另类| 91久久精品一区二区别| 久久国产精品久久久久久电车| 亚洲人屁股眼子交8| 国产精品日韩欧美大师| 免费不卡在线观看av| 99在线精品视频| 蜜臀久久久99精品久久久久久 | 一区二区三区久久久| 国产情人综合久久777777| 女女同性女同一区二区三区91| 中文av一区特黄| 欧美v日韩v国产v| 欧美亚洲在线| 一本色道久久| 有码中文亚洲精品| 国产欧美精品久久| 欧美精品二区| 老司机午夜免费精品视频| 亚洲欧美成人一区二区在线电影 | 在线亚洲精品| 尤物精品国产第一福利三区| 国产精品亚洲一区| 欧美日本高清一区| 久久综合图片| 欧美在线观看视频一区二区| 在线综合亚洲| 99热免费精品| 亚洲经典在线看| 狼狼综合久久久久综合网 | 在线观看视频一区二区| 国产日本欧美一区二区| 欧美视频不卡中文| 欧美日韩成人网| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜日韩激情| 亚洲欧美综合国产精品一区| 99视频在线观看一区三区| 亚洲精品久久久一区二区三区| 欧美激情精品久久久久久久变态| 久久免费视频在线观看| 久久五月婷婷丁香社区| 久久视频这里只有精品| 久久免费国产| 久久综合色影院| 免费成人高清视频| 欧美sm视频| 亚洲高清精品中出| 亚洲国产视频直播| 亚洲每日在线| 日韩亚洲不卡在线| 亚洲网在线观看| 午夜精彩国产免费不卡不顿大片| 亚洲一区二区三区免费视频| 亚洲欧美变态国产另类| 欧美一级久久久| 久久免费偷拍视频| 欧美高清视频| 欧美日韩一区二区欧美激情| 国产精品盗摄久久久| 国产精品永久入口久久久| 国产一区二区三区丝袜| 亚洲第一精品福利| 99国产精品99久久久久久| 亚洲一区二区av电影| 小黄鸭精品aⅴ导航网站入口| 久久激情综合网| 欧美电影在线观看完整版| 亚洲破处大片| 亚洲一区国产一区| 久久婷婷久久一区二区三区| 欧美激情四色| 国产日韩精品一区二区三区在线 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲午夜国产一区99re久久| 亚洲欧美在线观看| 麻豆精品视频| 99精品视频免费| 久久国产夜色精品鲁鲁99| 欧美成人免费在线观看| 国产精品福利网站| 狠狠色丁香久久婷婷综合_中| 91久久国产精品91久久性色| 亚洲永久精品国产| 噜噜噜久久亚洲精品国产品小说| 亚洲激情国产| 久久国产天堂福利天堂| 欧美日韩免费观看一区二区三区 | 亚洲伊人一本大道中文字幕| 久久理论片午夜琪琪电影网| 亚洲剧情一区二区| 久久蜜桃av一区精品变态类天堂| 欧美日韩免费一区二区三区| 久久亚洲午夜电影| 一区二区三区欧美激情| 香蕉精品999视频一区二区| 久久久久久亚洲精品中文字幕| 欧美日韩美女在线观看| 国产亚洲精品aa午夜观看| 99国内精品| 免费黄网站欧美| 亚洲欧美国产毛片在线| 欧美精品在线看| 亚洲夫妻自拍| 久久久青草青青国产亚洲免观| 99国产精品久久| 久久伊人免费视频| 欧美高清视频一区| 免费不卡亚洲欧美|