• <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>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
            1. Bilinear
            2. BiCubic
            3. Area_Average
            4. Progressive Bilinear
            當(dāng)圖片縮小到原圖的一半以下時(shí),bilinear的效果就不好了,再小下去,bicubic的也不夠好,最好的效果是area_average算法,但是這個(gè)需要花太多的時(shí)間,可以使用改進(jìn)過(guò)的bilinear算法,效果跟area average差不多,速度在bilinear和bicubic之間,但是當(dāng)圖片非常大,綻放到非常小時(shí),花的時(shí)間比bicubic多得多,但是比area average少得多,效果與area average差不多,還是不錯(cuò)的

            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. 

                // 縮小圖片,縮小時(shí)可以使用改進(jìn)過(guò)的bilinear, bicubic插值算法

                // 但是轉(zhuǎn)換透明圖片時(shí)如果使用單緩沖區(qū)會(huì)出問(wèn)題,這時(shí)每次都要?jiǎng)?chuàng)建一個(gè)緩沖區(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) {

                            // 如果是縮小,寬縮小為原來(lái)的一半

                            w >>>= 1;

                            w = (w < targetWidth) ? targetWidth : w;

                        } else {

                            w = targetWidth;

                        }


                        if (targetHeight < img.getHeight() && progressive && h > targetHeight) {

                            // 如果是縮小,高縮小為原來(lái)的一半

                            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 逛奔的蝸牛 閱讀(4265) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Java
            久久久午夜精品福利内容| 99蜜桃臀久久久欧美精品网站| 东方aⅴ免费观看久久av| 久久精品国产亚洲麻豆| 久久婷婷午色综合夜啪| 国产综合久久久久久鬼色| 免费精品久久久久久中文字幕| 无码精品久久久久久人妻中字| 久久精品视频网| 无码精品久久久天天影视| 欧美伊人久久大香线蕉综合69| 久久精品国产亚洲AV无码娇色| 日本加勒比久久精品| 色综合久久精品中文字幕首页| 久久婷婷五月综合成人D啪| 国产三级精品久久| 亚洲狠狠综合久久| 国产成人无码精品久久久免费 | 亚洲综合日韩久久成人AV| 亚洲伊人久久大香线蕉苏妲己| 久久精品a亚洲国产v高清不卡| 国内精品伊人久久久久777| 中文字幕无码精品亚洲资源网久久| 亚洲国产综合久久天堂| 18禁黄久久久AAA片| 亚洲AV无码1区2区久久| 国产日产久久高清欧美一区| 亚洲成色999久久网站| 久久免费香蕉视频| 欧美精品国产综合久久| 亚洲精品乱码久久久久久蜜桃不卡 | 国产一区二区三区久久| 国产三级精品久久| 欧美国产成人久久精品| 国产69精品久久久久9999| 久久er热视频在这里精品| 久久精品国产99久久香蕉| 久久久久久亚洲精品成人| 国产精品日韩欧美久久综合| 久久精品国产亚洲av麻豆色欲| 激情综合色综合久久综合|