una por movil mejor imagenes imagen google funciona fotos desde con como busqueda buscar buscador avanzada .net wpf gdi+ cmyk

.net - por - Cómo identificar imágenes CMYK usando C#



el mejor buscador de imagenes (3)

Los resultados de mi prueba son un poco diferentes a los tuyos.

  • Windows 7:
    • ImageFlags: ColorSpaceRgb
    • PixelFormat: PixelFormat32bppCMYK (8207)
  • Windows Server 2008 R2:
    • ImageFlags: ColorSpaceRgb
    • PixelFormat: PixelFormat32bppCMYK (8207)
  • Windows Server 2008:
    • ImageFlags: ColorSpaceYcck
    • PixelFormat: Format24bppRgb

El siguiente código debería funcionar:

public static bool IsCmyk(this Image image) { var flags = (ImageFlags)image.Flags; if (flags.HasFlag(ImageFlags.ColorSpaceCmyk) || flags.HasFlag(ImageFlags.ColorSpaceYcck)) { return true; } const int PixelFormat32bppCMYK = (15 | (32 << 8)); return (int)image.PixelFormat == PixelFormat32bppCMYK; }

¿Alguien sabe cómo identificar correctamente las imágenes CMYK utilizando C #? Descubrí cómo hacerlo utilizando ImageMagick, pero necesito una solución .NET. Encontré 3 fragmentos de código en línea, solo uno funciona en Windows 7, pero todos fallan en Windows Server 2008 SP2. Necesito que funcione al menos en Windows Server 2008 SP2. Esto es lo que he encontrado:

using System.Windows.Media; using System.Windows.Media.Imaging; using System.Drawing; using System.Drawing.Imaging; bool isCmyk; // WPF BitmapImage wpfImage = new BitmapImage(new Uri(imgFile)); // false in Win7 & WinServer08, wpfImage.Format = Bgr32 isCmyk = (wpfImage.Format == PixelFormats.Cmyk32); // Using GDI+ Image img = Image.FromFile(file); // false in Win7 & WinServer08 isCmyk = ((((ImageFlags)img.Flags) & ImageFlags.ColorSpaceCmyk) == ImageFlags.ColorSpaceCmyk); // true in Win7, false in WinServer08 (img.PixelFormat = Format24bppRgb) isCmyk = ((int)img.PixelFormat) == 8207;


Me encontré con los mismos problemas y si usas .net 2.0, entonces BitmapDecoder no funcionará ... lo que quieres hacer es leer el archivo y simplemente verificar que los bytes dicen que el archivo es ... Cómo identificar las imágenes CMYK en ASP.NET usando C # Espero que esto ayude a alguien.

Saludos - Jeremy


No comenzaría con BitmapImage como su forma de cargar los datos. De hecho, no lo usaría en absoluto para esto. En su lugar usaría BitmapDecoder::Create y pasar en BitmapCreateOptions.PreservePixelFormat . Luego, puede acceder al BitmapFrame que está interesado y verificar su propiedad de Format , que ahora debería generar CMYK.

Luego, si realmente necesita mostrar la imagen, solo puede asignar BitmapFrame , que también es una subclase de BitmapSource , a una Image::Source .