Java线程控制的图像分割与合成

豆豆网   技术应用频道   2006年03月31日  【字号: 收藏本文

本文详细介绍Java线程控制的图像分割与合成

  final int EMPTY=19;//将第20单元,即cells[19]置成

  //空白图像

  然后将这些图像分割单元存于1个Cell类数组cells[]中,在这里Cell类中含有图像以及它的起始位置和当前位置,其具体定义如下:

    class Cell
   {int sx,sy; //起始位置
   int cx,cy; //当前位置
   Image img; //单元图像
   public Cell(Image img,int x,int y) //Cell类构造函数
   {this.img=img;
   sx=x;sy=y;} //给起始位置赋值为x,y
   }

  为了对每个图像分割单元进行状态跟踪,还需要建立1个MediaTracker类的实体(instance),然后调用addImage()方法,为每个要跟踪的图像指定1个唯一的标识符。标识符决定了图像获取时的优先顺序并使得图像能够独立完整地进行处理。

  MediaTracker tracker=new MediaTracker(this)

  //为当前使用类建立1个MediaTracker实体,用于跟踪类

  //上的图像

  cells[EMPTY]=new Cell(createEmpty(),toPoint(EMPTY).x,toPoint(EMPTY).y);

  tracker.addImage(cells[EMPTY].img,0);

  //调用createEmpty()方法产生空白图像,并加入到所跟踪

  //的cells数组中20单元

  void setPosition(int x,int y)  //设置单元图像当前位置

  {cx=x;cy=y;}

  各个图像单元的位置存放于位置数组position里:

  int position[][]=new int[XCELLs][YCELLS]

  这样就可以使用Cell类数组cells[]对图像的各个单元进行操作,从而将各个单元图像进行合成显示,并通过position[][]数组改变各个单元的位置。为了对各单元进行并发操作,需要对线程加以控制,并通过鼠标事件和按键事件控制进程的开始、睡眠和进行等状态变化,其实现方法如下(仅以run()方法为例):

责编:豆豆技术应用

正在加载评论...