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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
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>
            99国产精品视频免费观看| 欧美一区二区女人| 蜜桃久久精品一区二区| 午夜视频在线观看一区二区| 国产精品一区二区在线| 久久丁香综合五月国产三级网站| 亚洲欧美第一页| 国内外成人免费激情在线视频网站| 久久影音先锋| 欧美第一黄网免费网站| 亚洲视频自拍偷拍| 亚洲欧美日韩国产综合精品二区| 狠狠色综合日日| 亚洲国产经典视频| 欧美婷婷久久| 久久久亚洲影院你懂的| 免费欧美高清视频| 亚洲在线播放电影| 久久精品国产亚洲一区二区| 亚洲精品黄色| 亚洲砖区区免费| 亚洲激情午夜| 亚洲一区区二区| 亚洲国产精品悠悠久久琪琪| 99精品国产一区二区青青牛奶| 国产精品欧美日韩| 欧美高清不卡| 国产精品亚洲欧美| 亚洲国产日韩欧美在线动漫| 欧美视频一区二区三区在线观看| 久久久人成影片一区二区三区 | 亚洲男人的天堂在线观看| 亚洲欧美色一区| 亚洲精品久久久久久久久久久| 亚洲欧美另类中文字幕| 亚洲人成人一区二区三区| 亚洲制服丝袜在线| 日韩视频免费在线| 久久黄色小说| 欧美亚洲一区二区在线| 欧美电影资源| 六十路精品视频| 国产欧美精品一区| 日韩视频在线一区二区三区| 136国产福利精品导航网址| 亚洲在线观看视频| 在线综合视频| 欧美剧在线免费观看网站| 久久伊人一区二区| 国产区在线观看成人精品| 亚洲乱码国产乱码精品精可以看| 亚洲大胆人体视频| 欧美在线播放| 久久精品日韩一区二区三区| 欧美视频精品在线| 亚洲精品乱码久久久久久蜜桃麻豆| 韩日欧美一区二区| 欧美一级理论片| 欧美影院成人| 国产精品一区在线播放| 亚洲深夜福利在线| 亚洲一区二区免费| 欧美日韩国产亚洲一区| 亚洲精品久久久久中文字幕欢迎你| 亚洲第一色中文字幕| 久久精品免费看| 久久夜色精品国产欧美乱| 国产伦精品一区二区三区照片91| 亚洲性色视频| 欧美一区二区三区电影在线观看| 国产精品日日摸夜夜添夜夜av| 亚洲私人影吧| 久久精品国产2020观看福利| 国产日韩欧美一区在线| 欧美影院在线| 欧美国产欧美综合| 日韩视频不卡中文| 欧美午夜精品理论片a级按摩| 99这里有精品| 欧美中文在线观看国产| 国外成人网址| 欧美成人午夜免费视在线看片| 亚洲国产第一| 亚洲欧美日韩精品久久久久| 国产精品入口麻豆原神| 欧美在线视频日韩| 欧美黄色免费网站| 中国日韩欧美久久久久久久久| 国产精品在线看| 久久九九精品99国产精品| 亚洲第一二三四五区| 亚洲综合欧美| 海角社区69精品视频| 欧美成人免费播放| 亚洲深夜福利视频| 久久综合激情| 亚洲视频综合| 在线看国产日韩| 欧美日韩中文字幕在线视频| 欧美一区二区三区四区在线观看| 欧美jizz19性欧美| 亚洲一区二区三| 在线不卡中文字幕| 欧美婷婷久久| 美日韩精品视频| 亚洲欧美中文日韩在线| 欧美激情视频在线播放 | 亚洲日本国产| 国产精品自拍在线| 欧美华人在线视频| 久久er99精品| 一本色道久久88精品综合| 美女国产一区| 午夜免费日韩视频| 亚洲美女尤物影院| 精品福利电影| 国产精品色婷婷| 欧美激情一区在线观看| 久久精品亚洲一区二区| 亚洲图片在区色| 亚洲激精日韩激精欧美精品| 久久国产福利国产秒拍| 99re这里只有精品6| 欧美成年视频| 久久久久久久999精品视频| 亚洲永久免费观看| 99国产精品久久| 伊人久久综合| 国产亚洲精品久久久久动| 欧美视频观看一区| 欧美日韩国产一中文字不卡| 美日韩精品视频免费看| 久久精品在线播放| 久久成人资源| 久久精品国产第一区二区三区最新章节| 亚洲精品中文字幕女同| 亚洲区中文字幕| 91久久精品一区二区三区| 美女脱光内衣内裤视频久久影院 | 久久综合99re88久久爱| 香蕉久久国产| 性刺激综合网| 午夜国产精品影院在线观看| 亚洲一区欧美| 欧美亚洲综合另类| 亚洲欧美另类久久久精品2019| 亚洲视频在线观看网站| 亚洲在线日韩| 先锋影音国产精品| 午夜在线视频观看日韩17c| 欧美一区二区三区在线| 欧美一区在线视频| 久久国产视频网| 久久综合伊人77777| 免费视频亚洲| 欧美激情一区二区三区高清视频| 亚洲第一免费播放区| 亚洲电影专区| 一区二区高清| 亚洲欧美日韩网| 久久天堂国产精品| 欧美国产高清| 国产精品女主播在线观看| 国产日韩在线播放| 韩国三级电影一区二区| 亚洲电影自拍| 亚洲在线日韩| 久久嫩草精品久久久精品| 欧美激情一区二区三区在线视频观看 | 亚洲免费视频观看| 久久精品视频在线播放| 免费在线视频一区| 一本色道精品久久一区二区三区| 亚洲欧美视频一区| 美女性感视频久久久| 欧美日韩日日骚| 激情六月婷婷综合| 99热精品在线观看| 久久激情视频| 亚洲激情一区二区| 欧美亚洲在线| 欧美日韩国产一级片| 国产色产综合产在线视频| 亚洲经典在线| 欧美一区2区三区4区公司二百| 毛片一区二区| 亚洲午夜一级| 欧美大片第1页| 国产欧美日韩综合一区在线播放| 亚洲激情在线观看视频免费| 亚洲欧洲99久久| 亚洲国产精品va| 久久精品国产99国产精品| 欧美日韩精品福利| 亚洲第一区在线观看| 欧美一区二区三区播放老司机 | 亚洲欧美日韩精品在线| 亚洲第一视频| 久久久久久久91| 国产精品中文在线|