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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
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>
            国产无遮挡一区二区三区毛片日本| 99国产精品久久久久久久久久 | 欧美日韩在线播| 欧美大成色www永久网站婷| 欧美激情偷拍| 国产精品都在这里| 黄页网站一区| 日韩网站在线看片你懂的| 亚洲小少妇裸体bbw| 午夜欧美大片免费观看| 麻豆av一区二区三区久久| 亚洲电影天堂av| 日韩香蕉视频| 久久精品日韩| 欧美午夜在线一二页| 国产亚洲精品资源在线26u| 亚洲国产精品电影在线观看| 一区二区三区日韩精品视频| 久久久91精品国产| 亚洲美女毛片| 久久久噜噜噜久久中文字幕色伊伊 | 欧美精品一区二区在线观看 | 女同一区二区| 国产日韩欧美在线看| 亚洲精品自在在线观看| 欧美在线免费观看| 亚洲黄色大片| 久久婷婷国产综合国色天香| 国产精品专区第二| 99精品热6080yy久久| 美日韩精品视频免费看| 亚洲一区二区三区精品在线| 欧美高清免费| 一区二区三区在线免费视频| 午夜精品久久久久久久久| 亚洲福利精品| 久久婷婷国产综合精品青草 | 亚洲欧美欧美一区二区三区| 男女av一区三区二区色多| 亚洲综合久久久久| 欧美日韩视频在线| 亚洲日本在线观看| 午夜在线视频一区二区区别| 亚洲国产日韩欧美一区二区三区| 一区二区三区视频观看| 美女视频黄a大片欧美| 国产婷婷色一区二区三区在线| 一本色道久久综合精品竹菊 | 亚洲香蕉视频| 欧美激情中文字幕乱码免费| 亚洲成人中文| 男人的天堂亚洲在线| 欧美一区1区三区3区公司| 国产精品日本欧美一区二区三区| 99国产一区二区三精品乱码| 亚洲观看高清完整版在线观看| 久久裸体艺术| 在线欧美福利| 亚洲第一精品福利| 欧美大片免费久久精品三p | 久久欧美肥婆一二区| 亚洲欧美另类在线| 国产日本欧美在线观看| 久久久激情视频| 久久久久88色偷偷免费| 在线看国产日韩| 亚洲国产综合在线| 欧美日韩一区在线观看| 羞羞色国产精品| 久久国产精品网站| 亚洲精品国产视频| 宅男在线国产精品| 国产一区二区精品丝袜| 欧美成人三级在线| 欧美日韩精品免费在线观看视频| 亚洲欧美日本视频在线观看| 欧美怡红院视频一区二区三区| 在线观看国产精品网站| 亚洲国产岛国毛片在线| 欧美午夜片在线免费观看| 欧美中文日韩| 蜜臀久久99精品久久久画质超高清| 亚洲精品自在久久| 亚洲男人的天堂在线| 依依成人综合视频| 日韩视频一区二区在线观看| 国产三级精品三级| 亚洲国产日韩在线| 国产夜色精品一区二区av| 亚洲第一页中文字幕| 欧美视频一区二区在线观看 | 日韩一级大片在线| 国产日韩专区| 日韩视频在线一区| 国内一区二区在线视频观看| 亚洲黄一区二区| 国产欧美日韩一区二区三区| 欧美顶级大胆免费视频| 国产精品视频免费在线观看| 亚洲国产二区| 韩日午夜在线资源一区二区| 国产日韩欧美视频| 欧美一区二区三区视频在线| 欧美在线观看一二区| 亚洲精品美女在线| 欧美一区亚洲二区| 亚洲深爱激情| 蜜臀va亚洲va欧美va天堂| 久久激情综合| 欧美日韩成人综合在线一区二区 | 亚洲经典在线看| 国产亚洲激情在线| 国产精品99久久久久久久久久久久 | 亚洲日韩中文字幕在线播放| 黄色亚洲免费| 午夜精品一区二区三区在线| 亚洲曰本av电影| 欧美黑人多人双交| 老**午夜毛片一区二区三区| 国产欧美日韩综合一区在线播放| 亚洲伦理中文字幕| 日韩网站在线| 欧美破处大片在线视频| 亚洲国产精品t66y| 亚洲国产日韩在线| 久久综合影视| 男人插女人欧美| 亚洲丰满在线| 免费观看成人www动漫视频| 老司机一区二区| 国产亚洲人成网站在线观看| 午夜视频在线观看一区二区| 久久成人这里只有精品| 国产精品亚洲综合| 亚洲砖区区免费| 欧美伊人久久| 国产在线播精品第三| 欧美在线一区二区三区| 久久亚洲国产精品一区二区 | 亚洲精品黄网在线观看| 免费国产一区二区| 亚洲人成亚洲人成在线观看图片 | 午夜在线一区二区| 国产精品亚洲视频| 久久久国产精品一区二区三区| 美女被久久久| 亚洲精品一区二区网址| 欧美日韩综合另类| 亚洲欧美视频在线观看| 久久久噜噜噜久噜久久| 亚洲欧洲一区二区三区在线观看| 欧美激情第五页| 亚洲视屏在线播放| 久久精品视频网| 亚洲电影在线播放| 欧美日韩p片| 性欧美1819sex性高清| 欧美日韩一区二区在线| av成人免费在线| 免费在线看成人av| 99精品99久久久久久宅男| 亚洲欧美日韩爽爽影院| 国产日韩欧美麻豆| 欧美成熟视频| 午夜一区二区三区在线观看 | 欧美在线看片| 亚洲精品视频在线观看免费| 国产精品永久免费在线| 欧美91福利在线观看| 亚洲综合另类| 亚洲人体一区| 久久久久久高潮国产精品视| 亚洲伦伦在线| 国产在线精品成人一区二区三区| 欧美国产欧美综合 | 国产日韩欧美综合精品| 免费在线观看日韩欧美| 午夜日韩在线| 日韩天天综合| 女人色偷偷aa久久天堂| 亚洲欧美日韩精品久久久| 亚洲大片在线观看| 国产精品日韩欧美大师| 欧美国产视频一区二区| 欧美在线影院在线视频| 99精品国产高清一区二区| 免费久久99精品国产自在现线| 欧美一区二区三区日韩视频| 一区二区三区精品| 在线播放中文一区| 国产日韩欧美电影在线观看| 欧美三日本三级少妇三99| 美女黄毛**国产精品啪啪| 国产精品99久久久久久久久| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美在线观看| 亚洲天堂成人| 一本色道久久加勒比88综合| 亚洲欧洲一区二区在线播放 | 老司机成人在线视频|