中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      J2ME插值算法如何實現圖片的放大縮小

      時間:2024-10-27 13:42:42 SUN認證 我要投稿
      • 相關推薦

      J2ME插值算法如何實現圖片的放大縮小

        //生成放大縮小后圖形像素buf

        short[] desBuf = new short[desW * desH];

        int dx = 0;

        int dy = 0;

        int sx = 0;

        int sy = 0;

        int oldy = -1;

        for (int i = 0; i < desH; i++) {

        if (oldy == tabY[i]) {

        System.arraycopy(desBuf, dy - desW, desBuf, dy, desW);

        } else {

        dx = 0;

        for (int j = 0; j < desW; j++) {

        desBuf[dy + dx] = srcBuf[sy + tabX[j]];

        dx++;

        }

        sy += (tabY[i] - oldy) * srcW;

        }

        oldy = tabY[i];

        dy += desW;

        }

        //生成圖片

        desImg = Image.createImage(desW, desH);

        DirectUtils.getDirectGraphics(desImg.getGraphics()).

        drawPixels(desBuf, true, 0, desW, 0, 0, desW, desH, 0, 444);

        return desImg;

        }

        首先看函數的頭兩句,很容易,就是獲取原始圖片的寬度和高度


        int srcW = srcImg.getWidth(); //原始圖像寬 
        int srcH = srcImg.getHeight(); //原始圖像高

        接下來一句我們要定義一個short型數組,作為獲取原始圖片像素信息的緩存


       short[] srcBuf = new short[srcW * srcH];

        再下來一段,有的朋友可能會有些不明白,這里要解釋一下。由于getPixels()這個函數,只能獲取可變圖像的像素信息,非可變圖像,無法獲取像素信息。所以我們要用srcImg.isMutable() 來判斷,原始圖像是不是可變圖像,然后分兩種情況來處理。如果srcImg是可變圖像,我們就直接用getPixels()來獲取它的像素信息,并保存在srcBuf里。如果srcImg不是可變圖像,我們就需要把srcImage畫到事先生成的可變圖像desImg上,然后再獲取desImg的像素信息。


       Image desImg = Image.createImage(srcW, srcH); 
        if (srcImg.isMutable()) { /*如果是可變圖像*/ 
        DirectUtils.getDirectGraphics(srcImg.getGraphics()). 
        getPixels(srcBuf, 0, srcW, 0, 0, srcW, srcH, 444); 
        } else { /*如果是非可變圖像*/ 
        desImg.getGraphics().drawImage(srcImg, 0, 0, 0); 
        DirectUtils.getDirectGraphics(desImg.getGraphics()). 
        getPixels(srcBuf, 0, srcW, 0, 0, srcW, srcH, 444); 
        }

        再往下就是縮放算法的重點:插值表的生成。插值表分水平差值表和垂直插值表,我們要分別生成原始圖像矩陣的2種插值表,然后利用插值表生成放大縮小后的圖像矩陣。由于這個內容比較抽象,很難用文字表述清楚,所以我們用實例進行介紹。

        大家看下面這個水平的1*4的表格

        -----------------

        | 0 | 1 | 2 | 3 |

        -----------------

        如果要將這個表格放大成1*6的表格,放大的表格比原始表格多出了2個格子,我們只能對這多出來的2個格子進行插值,才能完成放大的操作。現在結合生成水平插值表的代碼來完成這個過程。


       distance = srcW > desW ? srcW : desW; 
        for (int i = 0; i <= distance; i++) { /*水平方向*/ 
        tabX[db] = (short) sb; 
        tems += srcW; 
        temd += desW; 
        if (tems > distance) { 
        tems -= distance; 
        sb++; 
        } 
        if (temd > distance) { 
        temd -= distance; 
        db++; 
        } 
        }

        很明顯原始表格寬度srcW = 4;放大后的表格寬度desW = 6;所以distance = desW = 6

      【J2ME插值算法如何實現圖片的放大縮小】相關文章:

      PPT圖片如何點擊放大11-15

      J2ME在移動設備上實現動畫程序方法01-22

      CAD如何插入圖片03-12

      常用排序算法之JavaScript實現代碼段03-10

      Spring如何實現郵件發送03-21

      如何實現員工的有效激勵04-01

      Java byte[]轉int如何實現03-16

      Java如何實現簡單的whois查詢03-16

      如何實現對基層員工的有效激勵03-22

      主站蜘蛛池模板: 亚洲欧洲综合有码无码| 免费视频一区二区三区亚洲激情| 免费福利视频二区三区| 久久精品这里就是精品| 成年人手机在线免费观看视频| 国产精品麻豆成人av| 亚洲欧美成人中文在线网站| 中字亚洲国产精品一区二区| 亚洲精品国产二区三区在线| 精品国产AⅤ一区二区三区V免费| 国产精品久久无码免费看| 国产精品国产自线拍免费| 无码人妻专区一区二区三区| 少妇熟女淫荡丰满| 定兴县| 乌拉特后旗| 辽宁省| 在线高清免费不卡视频| 阿尔山市| 国产欧美久久久精品影院| 亚洲成AV人久久| 社旗县| 涞水县| 亚洲一区二区三区无吗| 草莓视频中文字幕人妻系列| 亚洲成AV人国产毛片| 国产主播无套内射一区| av国产熟妇露脸在线观看| 日日噜噜噜夜夜爽爽狠狠视频| 国产精品亚洲综合色区韩国| 亚洲乱在线播放| 国内自拍视频在线观看| 亚洲AⅤ乱码一区二区三区| 91亚洲精品久久久蜜桃| 日本一区二区最新在线观看| 国产真实二区一区在线亚洲| 成人爱爱视频在线观看| 亚洲AV无码久久久久调教| 四虎影视国产884a精品亚洲| 国产a级黄色一区二区| 69堂在线无码视频2020|