www.pudn.com > decoder.zip > decoder.cpp


#include 
#include 
#include 
#include 
#include 


using namespace Magick;
FILE* stream;

class CImage
{
public:
  int maxX;
  int maxY;
  int cRes;
  int **intensity;

  void saveImage(char*);
  void decompressImage();
  void getInput(char*);
    
  CImage()
  {
    maxX = maxY = 0;
    intensity = NULL;
    cRes = 255;
  }

  ~CImage()
  {
    int i;
    for(i=0;i=0;k--)
	{
	  if(c%2==1)
	    input[j*8+k] = '1';
	  else
	    input[j*8+k] = '0';
	  c/=2;
	}
      j++;
    }
  input[j*8] = '\0';
}

void getACvalue(char* input, int& pos, int& n, int& p)
{
  int a,len,i,j,k;
  int codeLen[16][11] = {
    4 ,3 ,4 ,6 ,8 ,10,12,14,18,25,26,
    0 ,5 ,8 ,10,13,16,22,23,24,25,26,
    0 ,6 ,10,13,20,21,22,23,24,25,26,
    0 ,7 ,11,14,20,21,22,23,24,25,26,
    0 ,7 ,12,19,20,21,22,23,24,25,26,
    0 ,8 ,12,19,20,21,22,23,24,25,26,
    0 ,8 ,13,19,20,21,22,23,24,25,26,
    0 ,9 ,13,19,20,21,22,23,24,25,26,
    0 ,9 ,17,19,20,21,22,23,24,25,26,
    0 ,10,18,19,20,21,22,23,24,25,26,
    0 ,10,18,19,20,21,22,23,24,25,26,
    0 ,10,18,19,20,21,22,23,24,25,26,
    0 ,11,18,19,20,21,22,23,24,25,26,
    0 ,12,18,19,20,21,22,23,24,25,26,
    0 ,13,18,19,20,21,22,23,24,25,26,
    12,17,18,19,20,21,22,23,24,25,26
  };
  char* code[16][11] = {
    "1010\0",  "00\0",  "01\0",  "100\0",  "1011\0",  "11010\0",  "111000\0",  "1111000\0",  "1111110110\0",  "1111111110000010\0",  "1111111110000011\0",
    "\0","1100\0","111001\0","1111001\0","111110110\0","11111110110\0","1111111110000100\0","1111111110000101\0","1111111110000110\0","1111111110000111\0","1111111110001000\0",
    "\0","11011\0","11111000\0","1111110111\0","1111111110001001\0","1111111110001010\0","1111111110001011\0","1111111110001100\0","1111111110001101\0","1111111110001110\0","1111111110001111\0",
    "\0","111010\0","111110111\0","11111110111\0","1111111110010000\0","1111111110010001\0","1111111110010010\0","1111111110010011\0","1111111110010100\0","1111111110010101\0","1111111110010110\0",
    "\0","111011\0","1111111000\0","1111111110010111\0","1111111110011000\0","1111111110011001\0","1111111110011010\0","1111111110011011\0","1111111110011100\0","1111111110011101\0","1111111110011110\0",
    "\0","1111010\0","1111111001\0","1111111110011111\0","1111111110100000\0","1111111110100001\0","1111111110100010\0","1111111110100011\0","1111111110100100\0","1111111110100101\0","1111111110100110\0",
    "\0","1111011\0","11111111000\0","1111111110100111\0","1111111110101000\0","1111111110101001\0","1111111110101010\0","1111111110101011\0","1111111110101100\0","1111111110101101\0","1111111110101110\0",
    "\0","11111001\0","11111111001\0","1111111110101111\0","1111111110110000\0","1111111110110001\0","1111111110110010\0","1111111110110011\0","1111111110110100\0","1111111110110101\0","1111111110110110\0",
    "\0","11111010\0","111111111000000\0","1111111110110111\0","1111111110111000\0","1111111110111001\0","1111111110111010\0","1111111110111011\0","1111111110111100\0","1111111110111101\0","1111111110111110\0",
    "\0","111111000\0","1111111110111111\0","1111111111000000\0","1111111111000001\0","1111111111000010\0","1111111111000011\0","1111111111000100\0","1111111111000101\0","1111111111000110\0","1111111111000111\0",
    "\0","111111001\0","1111111111001000\0","1111111111001001\0","1111111111001010\0","1111111111001011\0","1111111111001100\0","1111111111001101\0","1111111111001110\0","1111111111001111\0","1111111111010000\0",
    "\0","111111010\0","1111111111010001\0","1111111111010010\0","1111111111010011\0","1111111111010100\0","1111111111010101\0","1111111111010110\0","1111111111010111\0","1111111111011000\0","1111111111011001\0",
    "\0","1111111010\0","1111111111011010\0","1111111111011011\0","1111111111011100\0","1111111111011101\0","1111111111011110\0","1111111111011111\0","1111111111100000\0","1111111111100001\0","1111111111100010\0",
    "\0","11111111010\0","1111111111100011\0","1111111111100100\0","1111111111100101\0","1111111111100110\0","1111111111100111\0","1111111111101000\0", "1111111111101001\0","1111111111101010\0","1111111111101011\0",
    "\0","111111110110\0","1111111111101100\0","1111111111101101\0","1111111111101110\0","1111111111101111\0","1111111111110000\0","1111111111110001\0","1111111111110010\0","1111111111110011\0","1111111111110100\0",
    "111111110111\0","1111111111110101\0","1111111111110110\0","1111111111110111\0","1111111111111000\0","1111111111111001\0","1111111111111010\0","1111111111111011\0","1111111111111100\0","1111111111111101\0","1111111111111110\0"
  };
  for(k=0;k<16;k++)
    for(i=0;i<11;i++)
      {
	a = 1;
	len = strlen(code[k][i]);
	for(j=0;j>i;
	}
      end = 1;
      RL[rl++] = n;
      RL[rl++] = p;
      RLED(ZZ,RL);
      // cout<<"\n\n";
      ZigZagD(QF,ZZ);
      QuantizeD(F,QF);
      //prn(QF);
      DCTD(f,F);
      for(i=0;i<8;i++)
	for(j=0;j<8;j++)
	  intensity[ypos*8+i][xpos*8+j]=f[i][j]+128;
      xpos++;
      if(xpos==(maxX/8))
	{
	  xpos = 0;
	  ypos++;
	}
      for(i=0;i<9;i++)
	{
	  if(input[pos+i]=='0')
	    end=0;
	}
      //   cin>>i;
    }
  /*  for(i=0;i>fname;
  strcat(fname,".Ajpg");
  stream = fopen(fname, "rt");
  cout<<"\n\nEnter name of output file (GIF file) : ";
  cin>>fname;
  i.decompressImage();
  i.saveImage(fname);
}