2010-09-09 4 views
2

J'utilise Perl et le module Image :: Magick pour traiter certains fichiers JPEG.Perl & Image :: Magick, obtenir des valeurs de couleur par pixel

J'utilise le sous-élément GetPixels pour obtenir les composants RVB de chaque pixel.

par exemple. J'ai constaté que getPixels renvoie deux octets par canal, par exemple.

$VAR1 = [ 
      46260, 
      45232, 
      44975 
     ]; 

$VAR1 = [ 
      58271, 
      58949, 
      60330 
     ]; 

Avant l'appel à Redimensionnement: (dans cet exemple) la couleur du pixel désigné est # b4b0af, et les valeurs renvoyées sont 0xB4B4, 0xB0B0, 0xAFAF. Je ne comprends pas pourquoi c'est le cas, mais je peux m'en occuper en utilisant MOD 256;

Mais après l'appel à Redimensionner, les valeurs retournées ne correspondent pas de manière évidente aux valeurs réelles que je trouve dans le fichier de sortie (verify.jpg).

Est-ce que Image :: Magick vient d'être ultra précis (en tenant compte des shorts au lieu des octets)?
Et le compte de compression JPEG pour l'écart entre la deuxième sortie Dumper et le contenu de 'verify.jpg'?

Répondre

1

lire tout sur colors in ImageMagick, y compris sa profondeur quantique:

ImageMagick peut être compilé pour supporter 32 ou 64 pixels binaires de type PixelPacket. Ceci est contrôlé par la valeur de la définition QuantumDepth. La valeur par défaut est de 64 bits, ce qui offre la meilleure précision.

Vous pourriez également aimer savoir comment il fonctionne color reduction.

+0

Merci brian. Liens très intéressants aussi. Je pense que je vais utiliser la plus grande précision, mais par intérêt, puis-je supposer que le décalage des valeurs ci-dessus par 8 bits me donnera une représentation précise de trois octets de la couleur? – aidan

0

La compression JPEG est à perte, il n'y a donc pas de correspondance directe entre les valeurs de pixels avant l'enregistrement et les pixels de l'image compressée. Vous devrez charger la nouvelle image si vous voulez savoir comment la compression l'a modifiée.

Questions connexes