2011-06-04 4 views
1

Je souhaite manipuler des images JPEG en C++ à l'aide du décodeur Mini Jpeg Decoder.Manipulation des images JPEG pixel par pixel à l'aide du mini décodeur Jpeg

Le problème est: Je veux lire pixel par pixel, mais le décodeur renvoie uniquement un imageData-tableau, similaire libjpeg fait.

Je ne peux pas faire une méthode comme ceci:

char getPixel(char x, char y, unsigned char* imageData) 
{ 
    //...??? 
} 

Le retour (la variable char) doit contenir la luminance du pixel.

(je travaille avec des images en niveaux de gris ...)

Comment puis-je résoudre ce problème?

Répondre

0

Pour autant que je sache, la classe Decoder fournit un tableau d'octets de valeurs de couleurs avec la méthode GetImage(). Donc, vous pouvez écrire une fonction qui ressemble à ceci:

char getLuminance(Decoder* dec, int x, int y) { 
    if(x < 0 || y < 0 || x >= dec->GetWidth() || y >= dec->GetHeight()) { 
     throw "out of bounds"; 
    } 

    return dec->GetImage()[x + y * dec->GetWidth()]; 
} 

Je suis incertain de la mise en page de pixels, alors peut-être l'accès au tableau ne va pas. De plus, cela ne fonctionne que pour les images en échelle de gris, sinon vous obtiendriez la luminance de la valeur de la couleur Rouge à la position seulement. HTH

+0

Merci beaucoup, ça fonctionne parfaitement! – cafaxo