<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 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

    主站蜘蛛池模板: 国产日韩久久久精品影院首页| 精品熟女少妇aⅴ免费久久| 国产成人精品久久免费动漫| 国产精品午夜一级毛片密呀| 久久精品国产亚洲AV高清热 | 97久久超碰成人精品网站| 久久精品国产亚洲AV电影| 亚洲国产精品一区二区久久| 日韩人妻无码精品久久免费一| 青青草国产精品久久| 无码人妻精品中文字幕免费| 久久99精品国产99久久6| 88久久精品无码一区二区毛片 | 99久久精品国产综合一区| 精品国产乱码久久久久久1区2区| 午夜精品久久久久久| 精品无码三级在线观看视频 | 亚洲国产成人a精品不卡在线| www.精品| 国产精品视频分类一区| 国内精品久久人妻互换| 亚洲精品夜夜夜妓女网| 日韩精品无码永久免费网站 | 精品人妻伦九区久久AAA片69| 午夜精品福利视频| 国产精品久久久久无码av| 国产精品三级在线观看无码| 全球AV集中精品导航福利| 一本一道久久a久久精品综合| 日韩精品成人a在线观看| 日本精品一区二区三区在线视频一| 国产亚洲美女精品久久久| 国产高清精品在线| 国产高清国内精品福利99久久| 中文字幕亚洲综合精品一区| 91国内揄拍国内精品情侣对白| 四虎国产精品永久一区| 777国产盗摄偷窥精品0OOO| 一区二区精品在线| 北岛玲日韩精品一区二区三区| 2021国产精品视频网站|