Pregunta

Estoy usando Perl y la Imagen :: Magick módulo para procesar algunos archivos JPEG.

Estoy usando el sub getPixels para obtener los componentes RGB de cada píxel.

por ejemplo.

my @pixels = $img->GetPixels(
    width     => 1,
    height    => 1,
    x         => 0,
    y         => 0,
    map       => 'RGB',
    #normalize => 1
)

print Dumper \@pixels;

$img->Resize(
    width  => 1,
    height => 1,
    filter => 'Lanczos'
);

@pixels = $img->GetPixels(
    width     => 1,
    height    => 1,
    x         => 0,
    y         => 0,
    map       => 'RGB',
    #normalize => 1
);

print Dumper \@pixels;

$img->Write('verify.jpg');

he encontrado que getPixels está regresando dos bytes por canal, por ejemplo.

$VAR1 = [
          46260,
          45232,
          44975
        ];

$VAR1 = [
          58271,
          58949,
          60330
        ];

Antes de la llamada al cambio de tamaño: (en este ejemplo) el color del píxel es designado # b4b0af, y los valores devueltos son 0xB4B4, 0xB0B0, 0xAFAF. No entiendo por qué esto es, pero puedo tratar con él usando MOD 256;

Sin embargo, después de la llamada para cambiar el tamaño, los valores devueltos no corresponden de ninguna manera obvia de los valores reales que encuentro en el archivo de salida (verify.jpg).

es la imagen :: Magick acaba de ser super-precisa (que representan los pantalones cortos en lugar de bytes)?
Y hace la cuenta de compresión JPEG para la discrepancia entre la segunda salida dumper y el contenido de 'verify.jpg'?

¿Fue útil?

Solución

Lea todo sobre colores en ImageMagick , incluyendo su profundidad de la cuantía:

  

ImageMagick puede ser compilado para apoyar 32 o 64 bits de píxeles tipo PixelPacket. Esto es controlado por el valor de la QuantumDepth definen. El valor por defecto es de 64 píxeles de bits, que proporciona la mejor precisión.

También te para leer acerca de cómo lo hace reducción de color .

Otros consejos

compresión JPEG tiene pérdida, así que no hay una correspondencia directa entre los valores de los píxeles antes de guardar y los píxeles de la imagen comprimida. Habría que cargar la nueva imagen si quieres descubrir cómo la compresión lo modificó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top