Domanda

Qual è il modo migliore per ridimensionare le immagini utilizzando .NET, senza perdere i dati EXIF? Sto bene usando le classi System.Drawing. * Di .NET 2, le classi WPF o le librerie open-source.

L'unico modo semplice che ho trovato per gestire tutto questo per ora è usare Graphics.FromImage (.NET 2) per eseguire il ridimensionamento e riscrivere i dati EXIF ??con una libreria OpenSource manualmente (ogni pezzo di dati uno di uno).

È stato utile?

Soluzione

Il tuo suggerimento di estrarre i dati EXIF ??prima di ridimensionare e quindi reinserire i dati EXIF ??sembra una soluzione decente.

I dati EXIF ??possono essere definiti solo per formati come JPEG e TIFF: quando si carica tale immagine in un oggetto grafico per il ridimensionamento, si sta essenzialmente convertendo l'immagine in una normale bitmap. Quindi, perdi i dati EXIF.

Discussione leggermente correlata sull'estrazione di EXIF ??usando C # qui .

Altri suggerimenti

Ho usato Magick .NET e ho creato 2 metodi di estensione:

    public static byte[] ToByteArray(this Image imageIn)
    {
        MemoryStream ms = new MemoryStream();
        imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        return ms.ToArray();
    }

    public static Image AttachMetadData(this Image imgModified, Image imgOriginal)
    {
        using (MagickImage imgMeta = new MagickImage(imgOriginal.ToByteArray()))
        using (MagickImage imgModi = new MagickImage(imgModified.ToByteArray()))
        {
            foreach (var profileName in imgMeta.ProfileNames)
            {
                imgModi.AddProfile(imgMeta.GetProfile(profileName));
            }
            imgModified = imgModi.ToImage();
        }
        return imgModified;
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top