亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

J2ME插值算法如何實現(xiàn)圖片的放大縮小

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

J2ME插值算法如何實現(xiàn)圖片的放大縮小

  //生成放大縮小后圖形像素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;

  }

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


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

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


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

  再下來一段,有的朋友可能會有些不明白,這里要解釋一下。由于getPixels()這個函數(shù),只能獲取可變圖像的像素信息,非可變圖像,無法獲取像素信息。所以我們要用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種插值表,然后利用插值表生成放大縮小后的圖像矩陣。由于這個內(nèi)容比較抽象,很難用文字表述清楚,所以我們用實例進行介紹。

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

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

  | 0 | 1 | 2 | 3 |

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

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


 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插值算法如何實現(xiàn)圖片的放大縮小】相關(guān)文章:

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

J2ME在移動設(shè)備上實現(xiàn)動畫程序方法01-22

CAD如何插入圖片03-12

常用排序算法之JavaScript實現(xiàn)代碼段03-10

Spring如何實現(xiàn)郵件發(fā)送03-21

如何實現(xiàn)員工的有效激勵04-01

Java byte[]轉(zhuǎn)int如何實現(xiàn)03-16

Java如何實現(xiàn)簡單的whois查詢03-16

如何實現(xiàn)對基層員工的有效激勵03-22

主站蜘蛛池模板: 日本丶国产丶欧美色综合| 中文在线中文a| 狠狠色香婷婷久久亚洲精品| 承德县| 97碰成人国产免费公开视频| 精品国产自在现线看久久| 国产在线视频www色| 无码av天堂一区二区三区| 国产精品成人av电影不卡| 一本一本久久a久久综合精品蜜桃 久久综合精品国产一区二区三区无码 | 色一情一乱一伦一区二区三区日本| 精品国产网站| 永胜县| 剑川县| 国产一区二区精品久久凹凸 | 久久国产精品99精品国产| 日韩一区国产二区欧美三区| 精品精品自在现拍国产2021| 亚洲不卡电影| 亚洲欧美日韩成人在线| 六月婷婷精品视频在线观看| 尤物国产在线| 亚洲欧美日本国产专区一区| 在线天堂最新版资源| 无码人妻精品一区二| 无码免费午夜福利片在线| 色av综合av综合无码网站| 四虎成人精品永久在线视频| 精品97国产免费人成视频| 亚洲春色av无码专区在线播放| 成人综合婷婷国产精品久久| 日韩视频在线观看| 久久精品成人免费观看| 久久久久无码精品国产人妻无码| 中文字幕+乱码+中文字幕一区 | 人妻少妇精品无码专区动漫| 亚洲精品久久久久成人2007| 国产一区二区不卡老阿姨| av无码天一区二区一三区| 国产亚洲精品自在久久vr| 极品少妇被猛得白浆直流草莓视频 |