MIDP1.0实现图片的缩放

使用MIDP1.0来实现图片的缩放
   1>两种方式实现图片的放缩:
           (1)先放缩宽,然后放缩高,时间复杂度比较低
      代码实现:
private static final Image scale(Image srcImage, int desWidth, int desHight) {
  int srcWidth = srcImage.getWidth();
  int srcHight = srcImage.getHeight();
  // 先做水平方向上的伸缩变换
  Image tmp = Image.createImage(desWidth, srcHight);
  Graphics g = tmp.getGraphics();

  for (int x = 0; x < desWidth; x++) {
   g.setClip(x, 0, 1, srcHight);
   // 按比例放缩
   g.drawImage(srcImage, x - x * srcWidth / desWidth, 0, Graphics.LEFT
     | Graphics.TOP);
  }
  // 再做垂直方向上的伸缩变换
  Image dst = Image.createImage(desWidth, desHight);
  g = dst.getGraphics();

  for (int y = 0; y < desHight; y++) {
   g.setClip(0, y, desHight, 1);
   // 按比例放缩
   g.drawImage(tmp, 0, y - y * srcHight / desHight, Graphics.LEFT
     | Graphics.TOP);

  }

  return dst;

 }
       (2)从一个角开始放缩,实现的图片的画出。时间复杂度比上个差
private void scale(Graphics g, Image srcImage,
   int desWidth, int desHeight,
   int beginX,int beginY) {

  int srcWidth = srcImage.getWidth();
  int srcHeight = srcImage.getHeight();
  
  /*
   * 从边开始,按比例缩放
   */
  for(int i=0;i<desWidth;i++)
   for(int j=0;j<desHeight;j++){
    g.setClip(beginX+i,beginY+j,1,1);
    g.drawImage(srcImage,
      beginX+i-i*srcWidth/desWidth,
      beginY+j-j*srcHeight/desHeight,
      Graphics.LEFT|Graphics.TOP);
   }
 }
各位如果有更好的,别忘了交流经验哦!

posted on 2006-02-16 21:37  星星博客园  阅读(184)  评论(0编辑  收藏  举报

导航

立即注册PayPal并开始接受信用卡付款。