2009-07-23 20 views
5

Necesito generar imágenes en miniatura y de tamaño mediano a partir de fotos grandes. Estas fotos más pequeñas se muestran en una galería en línea. Muchos de los fotógrafos envían imágenes JPEG utilizando Adobe RGB. Me gustaría usar sRGB para todas las imágenes en miniatura e imágenes de tamaño medioConversión de espacio de color JPEG (Adobe RGB a sRGB) en Windows (.Net)

Estoy usando dotnet (asp.net) y necesito una forma de convertir de Adobe RGB a sRGB sin perder calidad.

Respuesta

4

Información de fondo: los archivos Jpg tienen 8 bits de rojo, verde y azul, ya sea sRGB, Adobe RGB o simple ol 'RGB. El descriptor ICC determina el espacio de color. A veces esto está incrustado en el archivo jpg. A veces hay una bandera para designar sRGB, etiqueta Exif Colorspace a001 = 1. No hay una bandera estándar para Adobe RGB, pero algunas aplicaciones y cámaras usan 65535 (sin calibrar) para Adobe RGB en la etiqueta EXIF ​​A001.

Para convertir un archivo jpg de un perfil ICC (espacio de color) a otro, puede usar CreateColorTransform para crear una transormulación entre los espacios de color. Deberá proporcionar el perfil ICC para los espacios de color de origen (Adobe RGB) y de destino (sRGB).

Después de que tenga la transformación, use TranslateBitmapBits para ajustar los píxeles. Puede ser más fácil trabajar con la imagen como DIBSection.

Esto puede ser un poco complejo de escribir en .asp, por lo que podría ser más fácil usar una biblioteca de gráficos que hace esto.

1

Debe utilizar la opción ImageMagic -profile, creo que la opción -colorspace no lo ayudará allí.

convert image.jpg -profile sRGB.icc rgb_image.jpg 

Alternativamente, usted puede buscar little color management engine

4

Tome un vistazo a ColorConvertedBitmap class.

+0

El enlace parece funcionar ahora. –

+0

@Jon Gracias, actualicé la respuesta. –

Cuestiones relacionadas