Example #1
0
bool BMP::read8bits()
{
    std::ifstream imageFile(_pathname.c_str(),std::ios::binary);

    //Palette recuperation
    imageFile.seekg(_offsetImage-1024,std::ios::beg);
    unsigned char red,green,blue,alpha,color;
    RGBA* rgba;
    for(int i=0;i<256;i++)
    {
        rgba = new RGBA();
        imageFile.read((char*)&red,sizeof(char));
        imageFile.read((char*)&green,sizeof(char));
        imageFile.read((char*)&blue,sizeof(char));
        imageFile.read((char*)&alpha,sizeof(char));
        rgba->setRed(red);
        rgba->setGreen(green);
        rgba->setBlue(blue);
        rgba->setAlpha(alpha);
        this->palette.push_back(rgba);
        _correspondancepixelPalette[red][green][blue][alpha]=i;

    }
    imageFile.seekg(_offsetImage,std::ios::beg);
    //pixel recuperation

    //Initialisation array first to reverse to order : 0,0 means top left
    this->pixel.resize(this->getHeightImage());
    for(int i=0;i<this->getHeightImage();i++)
    {
        this->pixel[i].resize(this->getWidthImage());
    }


    for(int i=this->getHeightImage()-1;i>=0;i--)
    {
        for(int j=0;j<this->getWidthImage();j++)
        {
        imageFile.read((char*)&color,sizeof(char));
        this->pixel[i][j]=new RGBA(this->palette[color]);
        }
    }

    imageFile.close();
    return false;
}