1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
// Bmp.cpp : implementation file
//
#include "stdafx.h"
#include "Bmp.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBmp
CBmp::CBmp()
{
}
CBmp::~CBmp()
{
}
void CBmp::Open(string _imgPath)
{
//--------------------------
// ouverture du fichier en lecture seule binaire
ifstream f ;
f.open(_imgPath.c_str(),std::ios_base::binary) ;
if (f.is_open() != 0)
{
f.read(reinterpret_cast<char*>(&m_fType), sizeof(WORD));
f.read(reinterpret_cast<char*>(&m_fSize), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_fReserved1), sizeof(WORD));
f.read(reinterpret_cast<char*>(&m_fReserved2), sizeof(WORD));
f.read(reinterpret_cast<char*>(&m_fOffBits), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iSize), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iWidth), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iHeight), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iPlanes), sizeof(WORD));
f.read(reinterpret_cast<char*>(&m_iBitCount), sizeof(WORD));
f.read(reinterpret_cast<char*>(&m_iCompression), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iSizeImage), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iXpelsPerMeter), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iYpelsPerMeter), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iClrUsed), sizeof(DWORD));
f.read(reinterpret_cast<char*>(&m_iClrImportant), sizeof(DWORD));
//--------------------------
// Mémorisation de l'entête et des caractéristiques de l'image
m_imageData = new char[m_iSize*sizeof(char)] ;
// recopie de l'image
f.read(reinterpret_cast<char*>(&m_imageData), m_iSize*sizeof(char));
//----------------------------
// fermeture du fichier de l'image
f.close() ;
}
}
void CBmp::SaveBmp(string _path)
{
ofstream f ;
f.open(_path.c_str(),std::ios_base::binary) ;
if (f.is_open() != 0)
{
f.write(reinterpret_cast<const char*>(&m_fType), sizeof(WORD));
f.write(reinterpret_cast<const char*>(&m_fSize), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_fReserved1), sizeof(WORD));
f.write(reinterpret_cast<const char*>(&m_fReserved2), sizeof(WORD));
f.write(reinterpret_cast<const char*>(&m_fOffBits), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iSize), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iWidth), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iHeight), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iPlanes), sizeof(WORD));
f.write(reinterpret_cast<const char*>(&m_iBitCount), sizeof(WORD));
f.write(reinterpret_cast<const char*>(&m_iCompression), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iSizeImage), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iXpelsPerMeter), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iYpelsPerMeter), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iClrUsed), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_iClrImportant), sizeof(DWORD));
f.write(reinterpret_cast<const char*>(&m_imageData), m_iSize*sizeof(char));
f.close() ;
}
} |
Partager