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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
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>
            美女久久网站| 亚洲国产一区在线| 久久人人97超碰国产公开结果| 亚洲精品一区二区三区樱花| 91久久夜色精品国产网站| 欧美v国产在线一区二区三区| 毛片av中文字幕一区二区| 欧美激情精品久久久| 日韩一区二区精品在线观看| 一区二区三区国产盗摄| 亚洲在线成人| 久久婷婷久久一区二区三区| 欧美巨乳在线| 国产色爱av资源综合区| 亚洲国产精品久久| 亚洲性视频h| 久久av一区二区| 欧美电影免费观看| 在线亚洲欧美专区二区| 久久午夜视频| 国产精品福利影院| 亚洲国产综合在线| 亚洲欧美在线磁力| 欧美大片一区| 亚洲欧美日韩国产另类专区| 久久综合一区二区| 国产精品理论片| 亚洲精品免费在线播放| 久久久噜噜噜久久狠狠50岁| 亚洲精品日本| 久久天堂国产精品| 国产日韩欧美在线看| 99视频精品在线| 美女图片一区二区| 亚洲欧美日韩一区| 欧美日韩在线第一页| 一区在线免费观看| 久久成人18免费观看| 一区二区日韩免费看| 久久夜色精品国产亚洲aⅴ| 国产日韩欧美精品一区| 亚洲天堂av在线免费| 亚洲人成网站在线播| 久久久精品性| 国产视频一区在线| 亚洲欧美伊人| 在线视频一区观看| 欧美日韩亚洲一区三区| 亚洲免费高清| 亚洲高清在线| 欧美成人tv| 91久久久久| 欧美成人免费网| 久久综合狠狠综合久久综青草| 国产欧美日本| 国产精品www色诱视频| 亚洲人成网站色ww在线| 蜜臀91精品一区二区三区| 久久精品日产第一区二区| 国产亚洲a∨片在线观看| 欧美一区激情视频在线观看| 一区二区三区成人 | 久久九九国产精品怡红院| 国产麻豆91精品| 欧美一区二区三区四区夜夜大片 | 香蕉久久夜色| 国内揄拍国内精品少妇国语| 久久精品国产第一区二区三区| 亚洲无吗在线| 国产欧美亚洲日本| 老牛嫩草一区二区三区日本| 欧美在线电影| 国模一区二区三区| 免费视频一区| 欧美精品www| 一区二区三区精品| 亚洲小视频在线观看| 国产日韩av高清| 久久综合色播五月| 欧美国产日本| 亚洲综合日韩中文字幕v在线| 亚洲视频一区二区| 国产又爽又黄的激情精品视频| 麻豆九一精品爱看视频在线观看免费| 麻豆成人在线观看| 亚洲视频第一页| 欧美中文字幕| 亚洲美女色禁图| 亚洲欧美激情视频| 亚洲国产成人在线| 亚洲性av在线| 在线免费观看日本一区| 日韩网站在线观看| 激情久久中文字幕| 一区二区三区精品| 亚洲高清一二三区| 亚洲午夜在线观看视频在线| 在线欧美亚洲| 亚洲欧美高清| 一区二区三区欧美在线观看| 久久精品官网| 亚洲午夜精品| 久久在线观看视频| 亚洲欧美中文另类| 欧美国产第一页| 久久精品亚洲一区| 欧美视频在线观看 亚洲欧| 噜噜噜噜噜久久久久久91| 国产精品久久久久久亚洲调教 | 欧美另类极品videosbest最新版本| 午夜日韩视频| 亚洲视频在线观看| 在线观看成人网| 亚洲女ⅴideoshd黑人| 亚洲免费高清| 巨胸喷奶水www久久久免费动漫| 欧美伊久线香蕉线新在线| 欧美~级网站不卡| 久久久视频精品| 国产精品亚洲精品| 亚洲精品一二三区| 亚洲啪啪91| 久久综合色88| 美女图片一区二区| 国产婷婷97碰碰久久人人蜜臀| 一区二区三区国产精品| 一本久久综合| 欧美激情小视频| 欧美成人免费大片| 精品91在线| 久久久精品日韩欧美| 久久午夜影视| 国产综合第一页| 久久av资源网| 久久久亚洲成人| 国产一区日韩欧美| 欧美一区二区精品| 久久久999精品| 国产一区二区三区久久悠悠色av| 亚洲伊人色欲综合网| 亚洲综合另类| 国产麻豆精品在线观看| 欧美一级黄色网| 乱中年女人伦av一区二区| 在线不卡中文字幕播放| 久久久中精品2020中文| 欧美成人精品激情在线观看| 亚洲国产精品久久91精品| 麻豆成人在线观看| 亚洲三级免费电影| 亚洲自拍啪啪| 国产日韩精品入口| 久久精品免费播放| 欧美激情一区二区在线 | 欧美成人精品福利| 欧美激情在线| 一本色道久久综合狠狠躁篇怎么玩| 欧美精品二区| 亚洲一区二区三区四区在线观看| 久久9热精品视频| 亚洲韩国青草视频| 国产精品第一区| 欧美在线播放| 亚洲国产精品一区制服丝袜| 亚洲一区二区日本| 国产在线观看一区| 欧美激情2020午夜免费观看| av成人黄色| 久久免费视频网站| 日韩亚洲在线| 国产女人18毛片水18精品| 久久久久免费观看| 亚洲免费成人| 久久久蜜桃精品| 日韩一级视频免费观看在线| 国产精品网红福利| 免费亚洲网站| 亚洲一区二区精品在线| 久久综合九色99| 夜夜爽99久久国产综合精品女不卡| 欧美一级成年大片在线观看| 欧美高清一区| 久久本道综合色狠狠五月| 亚洲精品久久久久久久久久久| 国产精品国产三级国产专播品爱网 | 国产精品视频精品| 欧美电影免费观看| 久久成人羞羞网站| 宅男在线国产精品| 亚洲高清av| 久久免费精品日本久久中文字幕| 99伊人成综合| 亚洲国产精品久久久久| 国产欧美日韩综合一区在线播放| 欧美日韩国产另类不卡| 美女国产一区| 久久精品国产综合精品| 亚洲一区二区三区高清不卡| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美日韩国产天堂|