Files
DarioS 30b56dbfc8 EgtGraphics 2.5e5 :
- migliorato controllo gestione chiave di rete.
2023-05-30 10:24:50 +02:00

76 lines
2.4 KiB
C++

//----------------------------------------------------------------------------
// 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<IEgrImageMgr*> ( 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 ;
}