麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

J2ME綜合:如何在MIDP中實現圖片放縮

2019-11-17 06:23:27
字體:
來源:轉載
供稿:網友

  無論在midp1.0還是在midp2.0中,系統都沒有給我們提供對圖片進行伸縮操作的api.但是其實我們只要在程序代碼中略施小計,就能達到這個效果,只是效果要比美術做出來的圖片,呵呵,差多啦,同時也會造成性能損失。伸縮圖片的構造原理就是簡單沿x,y軸按比例放縮,比如說我們需要把一張16*16的png圖片轉化成一張32*32的圖片,那么我們可以先對該圖片做一個水平方向上的拉伸操作,然后再把水平拉伸后的圖片按垂直方向再做一次拉伸操作。做拉伸操作時,比如水平方向上,我們需要構造一張32*16的mutable Image,獲取其Graphics,利用該Graphics,繪制該mutable Graphics的每一列像素,這一列像素就來自于原始圖片中的按比例對應的某一列像素。垂直方向上的拉伸操作也是如法炮制。因為是一種按比例的對應關系,圖像的縮小操作也可按該辦法進行。
  
  效果如下圖所示
  
 J2ME綜合:如何在MIDP中實現圖片放縮(圖一)

  
原始圖片

  
 J2ME綜合:如何在MIDP中實現圖片放縮(圖二)

  
圖片放大為全屏幕大小

  
J2ME綜合:如何在MIDP中實現圖片放縮(圖三)

  
圖片縮小為原來的1/4大小

  
  好了,我們來看代碼
  
  import javax.microedition.lcdui.Graphics;
  import javax.microedition.lcdui.Image;
  
  /**
  * 圖像工具類
  * @author Jagie
  *
  */
  
  public class ImageUtil {
  
  /**
  * 圖像放縮方法
  * @param srcImage 原始的Image對象
  * @param newW 放縮后的Image的寬度
  * @param newH 放縮后的Image的高度
  * @return 放縮后的Image對象
  */
  
  public static final Image scale (Image srcImage, int newW, int newH) {
  int srcW = srcImage.getWidth();
  int srcH = srcImage.getHeight();
  //先做水平方向上的伸縮變換
  Image tmp = Image.createImage(newW, srcH);
  Graphics g = tmp.getGraphics();
  
  for (int x = 0; x < newW; x++) {
  g.setClip(x, 0, 1, srcH);
  //按比例放縮
  g.drawImage(srcImage,x-x*srcWnewW,0,Graphics.LEFT Graphics.TOP);
  
  }
  
  //再做垂直方向上的伸縮變換
  Image dst = Image.createImage(newW, newH);
  g = dst.getGraphics();
  
  for (int y = 0; y < newH; y++) {
  g.setClip(0, y, newW, 1);
  //按比例放縮
  g.drawImage(tmp,0,y-y*srcHnewH,Graphics.LEFT Graphics.TOP);
  
  }
  
  return dst;
  }
  
  
  }
  
  也許有同學會提出疑問,既然是按x,y方向按等比例放縮,那我寫成這樣豈不是代碼更簡潔:
  
  public static final Image scale2(Image srcImage, int newW, int newH) {
  int srcW = srcImage.getWidth();
  int srcH = srcImage.getHeight();
  
  Image dst=Image.createImage(newW,newH);
  Graphics g=dst.getGraphics();
  for (int x = 0; x < newW; x++) {
  for (int y = 0; y < newH; y++) {
  g.setClip(x, y, 1, 1);
  g.drawImage(srcImage, x-x*srcWnewW, y - y * srcH / newH, Graphics.LEFT
   Graphics.TOP);
  
  }
  
  }
  
  return dst;
  }
  
  這種做法效果上和前者無異,但是并不可取,只要算算它的時間復雜度就知道,基本上是前者的平方。在我的機器上,做一次全屏幕的放縮操作,前者耗時60ms,而后者耗時7150ms。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色屁屁xxxxⅹ在线视频 | 国产一级中文字幕 | 欧美精品一区二区久久久 | 爽爽淫人综合网网站 | 国产精品久久久久网站 | 国产99视频在线观看 | 精品国产91一区二区三区 | 曰批全过程120分钟免费69 | 国产一级伦理片 | 欧美在线一级 | 91精品国产综合久久久欧美 | 色播亚洲| 污视频在线看 | 久久免费视频精品 | 亚洲码无人客一区二区三区 | 国产成人在线一区 | 欧美成人午夜 | 今井夏帆av一区二区 | 国产深夜福利视频在线播放 | 日本在线免费观看视频 | 国产成人精品日本亚洲语音 | 精品一区二区中文字幕 | 国产正在播放 | 中文字幕在线观看91 | 国产a级网站 | 欧美韩国日本在线 | 香蕉黄色网 | 欧美一级黄色片免费观看 | 国产精品午夜一区 | 国产亚洲高清在线精品不卡 | 久久看视频 | 欧美在线观看视频网站 | 国产精品剧情一区二区在线观看 | 中文字幕一区久久 | 亚洲国产成人一区 | 宅男噜噜噜66国产在线观看 | 少妇一级淫片免费看 | 免费男女视频 | 日本欧美中文字幕 | 久久国产精 | 日本精品黄色 |