1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 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個格子進行插值,才能完成放大的操作,F在結合生成水平插值表的代碼來完成這個過程。


         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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>