background image

 
private BufferedImage _bmp;
  private int curX, curY, iRGB;
  private int bitsLeft;
  public BitmapInput(BufferedImage bmp) {
  curX = curY = iRGB = 0;
  this._bmp = bmp;
  bitsLeft = bmp.getHeight() * bmp.getWidth() * 3;
  }
  public BufferedImage getBufferedImage() {
  return _bmp;
  }
  public synchronized Object[] readByte(int body) {
  body = 0;
  if (bitsLeft < 8) {
  return new Object[] { "false", "0" };
  }
  int bit = 0;
  int bits2Do = 8;
  for (; curX < _bmp.getWidth(); curX++) {
  if (curY >= _bmp.getHeight())
  curY = 0;
  for (; curY < _bmp.getHeight(); curY++) {
  if (bits2Do == 0) {
  return new Object[] { "true", String.valueOf(body) };
  }
  int rgb = _bmp.getRGB(curX, curY);
  int r = (rgb & 0x00ff0000) >> 16;
  int g = (rgb & 0x0000ff00) >> 8;
  int b = (rgb & 0x000000ff);
  while(true) {
  switch (iRGB) {
  case 0:
  bit = (r & 1);
  break;
  case 1:
  bit = (g & 1);
  break;
  case 2:
  bit = (b & 1);
  break;
  }
  --bits2Do;