//---------------------------------------------------------------------------- // EgalTech 2017-2017 //---------------------------------------------------------------------------- // File : ImageMgr.cpp Data : 05.07.17 Versione : 1.8g1 // Contenuto : Implementazione della classe gestione immagini. // // // // Modifiche : 05.07.17 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "ImageMgr.h" #include "DllMain.h" #include "/EgtDev/Include/EGrDllMain.h" #include "/EgtDev/Include/EgtILogger.h" #include "/EgtDev/Include/SELkKeyProc.h" #include "/EgtDev/Include/EgtKeyCodes.h" #include "/EgtDev/Include/EgtStringConverter.h" #include "/EgtDev/Extern/FreeImage/Include/FreeImage.h" using namespace std ; //---------------------------------------------------------------------------- IEgrImageMgr* CreateEgrImageMgr( void) { // verifico la chiave e le opzioni if ( ! VerifyKey( 0)) return nullptr ; // creo l'oggetto return static_cast ( new(nothrow) ImageMgr) ; } //---------------------------------------------------------------------------- ImageMgr::ImageMgr( void) { } //---------------------------------------------------------------------------- ImageMgr::~ImageMgr( void) { } //---------------------------------------------------------------------------- bool ImageMgr::GetImagePixels( const std::string& sFile, int& nPixelX, int& nPixelY) { // deduco il formato dell'immagine dalla sua segnatura o dalla estensione del file FREE_IMAGE_FORMAT nFif = FreeImage_GetFileTypeU( stringtoW( sFile), 0) ; if ( nFif == FIF_UNKNOWN) nFif = FreeImage_GetFIFFromFilenameU( stringtoW( sFile)) ; // se non determinata, esco con errore if ( nFif == FIF_UNKNOWN) return false ; // carico l'header e i dati dell'immagine FIBITMAP* pDib = nullptr ; if ( FreeImage_FIFSupportsReading( nFif)) pDib = FreeImage_LoadU( nFif, stringtoW( sFile), FIF_LOAD_NOPIXELS) ; if ( pDib == nullptr) return false ; // recupero alcuni dati dell'immagine e li verifico nPixelX = FreeImage_GetWidth( pDib) ; nPixelY = FreeImage_GetHeight( pDib) ; // libero la memoria FreeImage_Unload( pDib) ; return true ; }