2009-08-05 58 views
5

在不丟失EXIF數據的情況下使用.NET調整圖像大小的最佳方法是什麼?我可以使用.NET 2 System.Drawing。*類,WPF類或開源庫。使用.NET調整圖像大小而不會丟失EXIF數據

我發現現在處理這一切的唯一簡單方法是使用Graphics.FromImage(.NET 2)來執行調整大小,並手動重新編寫EXS數據(使用OpenSource庫)(每段數據逐個)。

+0

我加了CodePlex上的一個項目,具有調整大小,而不會丟失EXIF數據:http://tidytinypics.codeplex.com/ – TigrouMeow 2009-12-11 01:10:25

回答

3

您在調整大小之前提取EXIF數據然後重新插入EXIF數據的建議似乎是一個不錯的解決方案。

EXIF數據只能定義爲JPEG和TIFF格式 - 當您將這樣的圖像加載到Graphics對象中進行大小調整時,實質上是將圖像轉換爲常規位圖。因此,你失去了EXIF數據。

關於使用C#提取EXIF的略有相關的線程#here

+0

好吧,我然後保持我的解決方案,它工作得很好,它只是很多代碼,只是速度不夠:) – TigrouMeow 2009-08-05 14:52:05

2

我用Magick .NET和創建2種擴展方法:

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; 
    }