2012-04-23 10 views
8

Ecco la totalità del mio codice:Impossibile salvare l'immagine in un file correttamente con biblioteca CIMG

#include "CImg.h" 
#include <iostream> 

using namespace cimg_library; 
int main() { 

CImg<float> image(100,100,1,3,0); 
const float color[] = {1.0,1.0,0.0}; 
image.draw_point(50,50,color); 
image.save("file.bmp"); 
CImgDisplay local(image, "Hah"); 
while (true) { 
    local.wait(); 
    } 

} 

Questo visualizza con successo quello che mi aspettavo in una finestra, vale a dire, una piazza completamente nero con un pixel bianco a 50,50. Tuttavia, file.bmp è semplicemente un quadrato nero, senza quel pixel (e il salvataggio di un'immagine cimg che è stata modificata con chiamate ripetute a draw_point in un programma più grande che fa qualcosa di utile fallisce anche). Cosa sta succedendo qui?

+2

+1 per un breve programma di esempio completo,. Vedi http://sscce.org/. –

risposta

4

Il problema è che si crea CImgDisplay con la normalizzazione abilitata. Pertanto, il tuo pixel di {1,1,0} è normalizzato a {255,255,0} ed è visibile sullo schermo.

CImg.save non esegue la normalizzazione, quindi il pixel viene salvato su disco come un pixel molto scuro.

È possibile risolvere il problema modificando il colore pixel bianco:

const float color[] = {255.,255.,255.}; 

e, opzionalmente, disabilitando la normalizzazione:

CImgDisplay local(image, "Hah", 0); 

In subordine, si potrebbe normalizzare l'immagine originale prima di salvare o la visualizzazione è:

image.draw_point(50,50,color); 
image.normalize(0, 255); 
image.save("file.bmp"); 

Riferimenti:

+0

Questo era esattamente, non si normalizzava correttamente. Grazie! – Tneuktippa

1

Non ho familiarità con questa libreria, ma questo comportamento allude al fatto che CImgDisplay interpreta l'immagine in modo diverso durante il rendering.

Mi aspetto che il colore bianco sia definito come const unsigned char color[] = {255,255,255}; per rappresentare i valori RGB per la bitmap.

Vorrei controllare la documentazione per CImg come primo passo.

Problemi correlati