• <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
            精品久久久久久无码中文野结衣 | 精品久久久久久久久午夜福利| 青青青青久久精品国产| 欧美精品久久久久久久自慰| 久久久久久久女国产乱让韩| 伊人久久五月天| 香蕉久久夜色精品国产尤物| 亚洲va久久久久| 国产精品美女久久久久久2018| 精品久久久久久国产潘金莲| 91久久精品电影| 久久亚洲精品国产精品婷婷| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产成人精品综合久久久久| 亚洲国产精品无码久久久不卡 | 亚洲精品美女久久久久99小说| 中文字幕无码久久人妻| 久久亚洲美女精品国产精品| 国产 亚洲 欧美 另类 久久| 青青热久久国产久精品 | 亚洲国产精品无码成人片久久| 日韩久久久久久中文人妻| 99久久国产综合精品五月天喷水| 精品国产综合区久久久久久| 久久国产欧美日韩精品免费| 国产成人精品综合久久久| 99久久99久久精品国产片果冻| 污污内射久久一区二区欧美日韩| 久久青青草原精品国产| 久久精品国产第一区二区| 无码人妻久久一区二区三区| 国产精品成人99久久久久 | 久久精品国产WWW456C0M| 久久香蕉国产线看观看乱码| 午夜精品久久久久久99热| 无遮挡粉嫩小泬久久久久久久| 久久WWW免费人成一看片| 久久久久久久久久久精品尤物| 久久精品综合网| 99久久国产综合精品女同图片| 久久久噜噜噜久久中文字幕色伊伊 |