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

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::
1. Bilinear
2. BiCubic
3. Area_Average
4. Progressive Bilinear
當(dāng)圖片縮小到原圖的一半以下時,bilinear的效果就不好了,再小下去,bicubic的也不夠好,最好的效果是area_average算法,但是這個需要花太多的時間,可以使用改進過的bilinear算法,效果跟area average差不多,速度在bilinear和bicubic之間,但是當(dāng)圖片非常大,綻放到非常小時,花的時間比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插值算法

    // 但是轉(zhuǎn)換透明圖片時如果使用單緩沖區(qū)會出問題,這時每次都要創(chuàng)建一個緩沖區(qū)才可以

    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 逛奔的蝸牛 閱讀(4296) 評論(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>
            午夜精品国产更新| 麻豆精品国产91久久久久久| 久久久国产精品一区二区中文 | 免费日韩成人| 国产精品白丝av嫩草影院 | 激情久久综合| 亚洲午夜久久久久久久久电影网| 欧美一区1区三区3区公司| 亚洲人成网站精品片在线观看| 欧美一区二区日韩| 欧美亚洲系列| 欧美日本一道本| 在线精品视频一区二区| 性娇小13――14欧美| 亚洲精选视频在线| 女人色偷偷aa久久天堂| 一区二区三区回区在观看免费视频| 久久只有精品| 午夜精品久久久久影视| 欧美日韩亚洲一区二区三区| 亚洲精品久久久久久一区二区| 久久久久久夜| 亚洲一区久久| 欧美视频成人| 宅男噜噜噜66一区二区| 亚洲欧美电影在线观看| 国产精品毛片va一区二区三区| 99视频日韩| 亚洲日本视频| 国产精品一级在线| 久久aⅴ国产欧美74aaa| 久久久久久综合网天天| 国产欧美一二三区| 先锋影音国产精品| 久久亚洲一区| 1024亚洲| 正在播放欧美视频| 欧美www视频| 在线日韩av永久免费观看| 亚洲精品亚洲人成人网| 国产视频观看一区| 久久久噜噜噜久久中文字幕色伊伊| 欧美va日韩va| 欧美一区日本一区韩国一区| 欧美成人精品1314www| 香蕉免费一区二区三区在线观看| 裸体一区二区三区| 亚洲激情影视| 亚洲精品1234| 欧美日韩99| 在线一区二区三区四区五区| 久久国产99| 亚洲大片免费看| 亚洲性xxxx| 韩国成人理伦片免费播放| 久久久久高清| 欧美日韩在线直播| 欧美成人有码| 欧美成人一区二区| 久久久激情视频| 欧美日韩性视频在线| 美女成人午夜| 欧美精品videossex性护士| 一区二区三区免费网站| 久久九九精品99国产精品| 亚洲欧洲一二三| 日韩小视频在线观看专区| 国产精品区二区三区日本| 久久人人爽爽爽人久久久| 欧美午夜在线视频| 亚洲国产精品一区二区www在线| 欧美日韩一级大片网址| 欧美成人激情视频免费观看| 欧美xart系列在线观看| 久久久亚洲人| 国产麻豆成人精品| 日韩一区二区精品视频| 亚洲破处大片| 久久久免费av| 久久米奇亚洲| 国产精品视频免费| 99视频超级精品| 国产午夜精品一区理论片飘花 | 亚洲日本成人在线观看| 99re国产精品| 久久久久国产成人精品亚洲午夜| 国产精品进线69影院| 久久人人97超碰人人澡爱香蕉 | 亚洲国产一区二区三区在线播| 韩国成人精品a∨在线观看| 午夜激情综合网| 亚洲欧美日韩国产一区| 久久久91精品国产一区二区三区| 亚欧成人精品| 国产精品成人一区二区艾草| 亚洲精选在线观看| 99国产精品99久久久久久| 欧美电影电视剧在线观看| 欧美成人一二三| 在线观看亚洲视频啊啊啊啊| 久久99在线观看| 久久久亚洲国产美女国产盗摄| 国产亚洲在线观看| 欧美成黄导航| 亚洲第一区在线| 久久久久综合| 蜜臀av在线播放一区二区三区| 狠狠久久亚洲欧美| 久久国产88| 老司机免费视频久久| 黄色精品一二区| 久久久噜噜噜久久中文字幕色伊伊| 巨乳诱惑日韩免费av| 在线视频国产日韩| 蜜臀a∨国产成人精品| 欧美激情第4页| 国产欧美一区二区三区在线看蜜臀| 亚洲一区二区三区中文字幕| 午夜免费日韩视频| 国产欧美精品一区二区三区介绍 | 亚洲激情成人网| 亚洲免费av网站| 久久久www| 久久久久88色偷偷免费| 精品不卡视频| 裸体歌舞表演一区二区| 亚洲福利视频一区| 国产午夜精品美女毛片视频| 久久国产精品99国产| 免费中文字幕日韩欧美| 亚洲国产精品成人综合色在线婷婷| 亚洲伊人观看| 久久激情一区| 国产精品一区久久久| 欧美中文日韩| 免费成人网www| 亚洲清纯自拍| 欧美三级日本三级少妇99| 正在播放日韩| 久久久五月天| 91久久线看在观草草青青| 欧美人与禽猛交乱配视频| 亚洲午夜激情| 玖玖综合伊人| 一本色道久久综合亚洲精品不卡 | 亚洲一区二区在| 欧美va亚洲va香蕉在线| 日韩视频在线观看国产| 欧美在线观看天堂一区二区三区| 国内久久精品视频| 亚洲欧美日韩精品综合在线观看| 久久艳片www.17c.com| 亚洲精品国偷自产在线99热| 欧美午夜性色大片在线观看| 欧美一区二区三区另类| 亚洲第一页自拍| 亚洲制服丝袜在线| 伊人男人综合视频网| 久久精品国产69国产精品亚洲| 亚洲国产成人在线视频| 亚洲欧美日产图| 尤物yw午夜国产精品视频| 欧美精品尤物在线| 先锋影音久久久| 欧美一级欧美一级在线播放| 在线观看亚洲视频啊啊啊啊| 欧美午夜影院| 久久免费精品日本久久中文字幕| 亚洲免费黄色| 久久免费精品视频| 夜夜精品视频| 激情91久久| 欧美日韩在线看| 久久嫩草精品久久久精品| 一区二区三欧美| 亚洲欧美日韩精品久久亚洲区| 在线不卡中文字幕| 国产精品国产三级国产aⅴ9色| 久久久久久久网站| 亚洲无亚洲人成网站77777| 欧美大片网址| 性做久久久久久免费观看欧美 | 久久久精品免费视频| 日韩天堂在线视频| 免费短视频成人日韩| 欧美亚洲免费高清在线观看| 亚洲日本中文| 国产主播一区二区三区四区| 欧美日一区二区三区在线观看国产免| 久久九九免费视频| 日韩一级精品| 欧美顶级大胆免费视频| 欧美在线观看一二区| 99精品国产在热久久下载| 一色屋精品亚洲香蕉网站| 国产精品视频免费一区| 欧美日韩另类在线| 美女尤物久久精品| 销魂美女一区二区三区视频在线| 日韩视频三区|