La codificación JPEG de Windows Media Imaging no respeta el perfil de color de la imagen.
Tengo la siguiente imagen (he puesto una captura de pantalla de la imagen ya que su tamaño es más de 2 MB – la original se puede descargar de https://drive.google.com/file/d/1rC2QQBzMhZ8AG5Lp5PyrpkOxwlyP9QaE/view?usp=sharing
Estoy leyendo la imagen utilizando la clase BitmapDecoder
y guardándola utilizando un codificador JPEG. Esto resulta en la siguiente imagen que tiene un color apagado.
La imagen está utilizando el esquema de color PhotoShop RGB
. Intenté establecer el perfil de color utilizando el siguiente código, pero esto resulta en el error El codificador BitmapEncoder designado no admite contextos de color
Actualización: Clonar la imagen parece solucionar el problema. Pero cuando redimensiono la imagen utilizando el siguiente código de transformación, el perfil de color no se conserva.
davy.ai
Solución para preservar el perfil de color al utilizar BitmapDecoder y BitmapEncoder
Si está leyendo una imagen utilizando la clase BitmapDecoder y guardándola utilizando un codificador JPEG, es posible que note que la imagen resultante tiene un color apagado y desvanecido. Esto se debe probablemente a que el perfil de color no se está preservando.
Para preservar el perfil de color, pruebe el siguiente código:
Tenga en cuenta que estamos clonando la imagen utilizando
BitmapFrame.Create(frame)
para conservar el perfil de color. Luego establecemos el codificador para usar el mismo perfil de color que la imagen original, si está disponible. Y finalmente, agregamos la imagen clonada a los fotogramas del codificador y la guardamos en el archivo de salida.Si necesita cambiar el tamaño de la imagen, puede agregar una transformación a la imagen clonada antes de agregarla a los fotogramas del codificador. Sin embargo, tenga en cuenta que cambiar el tamaño puede afectar el perfil de color, por lo que es posible que necesite ajustarlo después. Por ejemplo:
Tenga en cuenta que estamos estableciendo el perfil de color nuevamente después de cambiar el tamaño, en caso de que no se haya conservado. Es posible que necesite experimentar con diferentes opciones para obtener los mejores resultados para su caso de uso específico.