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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
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 逛奔的蝸牛 閱讀(4293) 評論(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>
            午夜免费在线观看精品视频| 亚洲午夜免费视频| 玖玖视频精品| 影院欧美亚洲| 女人天堂亚洲aⅴ在线观看| 久久亚洲图片| 亚洲精品一区二区网址| 亚洲精品日韩综合观看成人91| 奶水喷射视频一区| 日韩午夜剧场| 亚洲高清在线视频| 亚洲精品欧美精品| 国产精品高潮呻吟久久| 久久精品电影| 欧美成人首页| 午夜激情综合网| 欧美在线国产| 日韩小视频在线观看专区| 在线一区二区三区四区五区| 国产裸体写真av一区二区| 久久久久久日产精品| 另类天堂视频在线观看| 99成人在线| 午夜视黄欧洲亚洲| 亚洲高清免费视频| 一区二区三区国产精品| 在线不卡亚洲| 99精品国产在热久久| 国产亚洲综合在线| 亚洲精品之草原avav久久| 国产日韩欧美高清| 亚洲国产精品成人va在线观看| 欧美日本不卡高清| 久久久久欧美| 欧美午夜片在线观看| 老巨人导航500精品| 欧美另类专区| 猛干欧美女孩| 国产精品视频一二三| 亚洲第一精品电影| 国模私拍一区二区三区| 一本色道久久综合亚洲二区三区| 韩国欧美国产1区| 中日韩男男gay无套| 亚洲黄色三级| 久久精品日韩欧美| 午夜一区不卡| 欧美日韩一区不卡| 欧美国产一区二区在线观看| 国产日韩欧美制服另类| 亚洲老司机av| 亚洲精品一区中文| 久久久久久午夜| 欧美在线综合视频| 国产精品久久久久久久电影| 亚洲人成毛片在线播放女女| 一区二区三区在线免费视频| 亚洲自拍电影| 午夜亚洲精品| 欧美午夜不卡视频| 一本色道久久综合亚洲二区三区| 亚洲精品黄色| 欧美精品v日韩精品v国产精品| 蜜臀va亚洲va欧美va天堂| 国产字幕视频一区二区| 欧美在线观看视频一区二区三区| 亚洲一二三区视频在线观看| 欧美精品在线观看| 亚洲另类在线视频| 一本色道久久综合亚洲精品按摩| 欧美大片在线观看一区| 亚洲国产日韩欧美综合久久| 亚洲国产精彩中文乱码av在线播放| 久久国产综合精品| 免费在线成人| 亚洲影院污污.| 久久精品国语| 一区二区三区中文在线观看| 久久国产精品一区二区| 久久综合九色综合欧美就去吻| 国产一在线精品一区在线观看| 欧美一区二区三区在线免费观看| 性做久久久久久久免费看| 国产精品主播| 久久久欧美精品| 亚洲承认在线| 亚洲午夜av在线| 国产婷婷精品| 久久日韩精品| 99精品国产高清一区二区| 亚洲一区在线播放| 国产在线视频欧美一区二区三区| 久久香蕉国产线看观看网| 亚洲高清二区| 欧美一区二区成人| 在线免费一区三区| 欧美日韩一区二区三区四区在线观看 | 亚洲人成绝费网站色www| 欧美激情一区二区三区不卡| 一区二区日韩精品| 久久精品中文字幕一区| 亚洲人体影院| 国产日韩欧美精品在线| 免费成人av在线看| 亚洲午夜av在线| 欧美顶级艳妇交换群宴| 亚洲一区综合| 亚洲国产毛片完整版| 国产精品久久久久久久久借妻| 久久国产精品亚洲va麻豆| 91久久精品日日躁夜夜躁国产| 午夜精品久久久久久久久久久久| 一区二区三区在线免费播放| 欧美日韩一区二区高清| 久久精品日韩欧美| 亚洲午夜久久久久久尤物| 欧美大片在线看| 久久精品国产亚洲aⅴ| 99综合电影在线视频| 狠狠色2019综合网| 国产精品sss| 欧美另类高清视频在线| 久久久久亚洲综合| 午夜精品区一区二区三| 99国产精品自拍| 亚洲国产小视频在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲午夜精品久久| 99riav国产精品| 亚洲国产mv| 激情av一区| 国产一区清纯| 国产精品亚洲产品| 国产精品久久| 欧美午夜视频一区二区| 欧美精品成人一区二区在线观看 | 久久精品91久久香蕉加勒比| 99精品欧美| 亚洲精品一区二区三区四区高清| 国内精品免费午夜毛片| 国产女主播在线一区二区| 国产精品久久久久久模特| 欧美先锋影音| 国产精品久久激情| 国产精品magnet| 国产精品久久久久三级| 国产精品久久久久久户外露出| 欧美日韩裸体免费视频| 欧美精品一区三区| 欧美日韩成人在线| 欧美电影美腿模特1979在线看| 蜜臀av国产精品久久久久| 久久夜色精品亚洲噜噜国产mv| 久久精视频免费在线久久完整在线看 | 香蕉成人啪国产精品视频综合网| 亚洲四色影视在线观看| 亚洲一区在线观看免费观看电影高清| 一区二区三区成人| 亚洲一区二区免费| 欧美亚洲网站| 久久久水蜜桃av免费网站| 久久人人爽国产| 欧美高清在线一区二区| 亚洲人成毛片在线播放女女| 99精品99久久久久久宅男| 亚洲天堂免费观看| 欧美综合国产| 欧美国产大片| 国产精品一区二区欧美| 国产专区一区| 日韩视频精品| 欧美一区二区三区日韩| 免费亚洲网站| 99精品视频一区| 欧美在线综合视频| 欧美高清视频www夜色资源网| 欧美日韩免费一区二区三区视频| 国产精品毛片va一区二区三区| 国产一区视频网站| 亚洲精品美女91| 久久国产高清| 亚洲黄色高清| 欧美一区激情视频在线观看| 蜜桃久久精品乱码一区二区| 欧美视频导航| 亚洲国产岛国毛片在线| 亚洲夜间福利| 欧美国产视频在线| 亚洲欧美中文日韩v在线观看| 久久综合激情| 国产欧美日韩亚洲| 一本综合久久| 欧美成人有码| 午夜精品成人在线| 欧美精品色网| 在线日韩电影| 先锋影音网一区二区| 亚洲三级电影在线观看| 久久久www成人免费无遮挡大片| 欧美日韩人人澡狠狠躁视频|