2014-09-04 46 views
0

所以我有這樣的方法來設置最終將被添加到我的形象,一些基本的元數據標籤:服務設置BitmapMetadata.Title在Windows Server 2003 Web版上運行會引發NotSupportedException

 BitmapMetadata metaData = new BitmapMetadata("jpg"); 
     foreach (var t in tags) 
     { 
      try 
      { 
       switch (t.Key) 
       { 
        case "Author": 
         metaData.Author = new System.Collections.ObjectModel.ReadOnlyCollection<string>(new string[] { t.Value }); 
         break; 

        case "Rating": 
         int rating = 0; 
         if (int.TryParse(t.Value, out rating)) 
         { 
          metaData.Rating = rating; 
         } 
         break; 

        case "Subject": 
         metaData.Subject = t.Value; 
         break; 

        case "Title": 
         metaData.Title = t.Value; 
         break; 

        case "Comment": 
         metaData.Comment = t.Value; 
         break; 

        default: 
         keywords.Add(string.Format("{0}:{1}", t.Key, t.Value)); 
         break; 
       } 
      } 
      catch (Exception ex) 
      { 
       //Do some logging 
      } 
     } 

而且我不斷收到錯誤:

System.NotSupportedException: No imaging component suitable to complete this operation was found. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x88982F50 \ --- End of inner exception stack trace --- \ at System.Windows.Media.Imaging.BitmapMetadata.SetQuery(String query, Object value) \ at System.Windows.Media.Imaging.BitmapMetadata.set_Title(String value)

作爲localhost在Windows 8.1上運行,這工作正常。只要我將我的服務部署到我的Windows Server 2003網絡版,就會引發顯示的錯誤。發生什麼事?

+0

也許你錯過了一個JPEG編碼器。這通常在名稱空間System.Drawing.Imaging中的System.Drawing.dll中。嘗試做「ImageCodecInfo [] encoderArray = ImageCodecInfo.GetImageEncoders();」並檢查返回的數組中是否至少有一個結果。 – RenniePet 2014-09-04 14:18:58

+0

我已經跑了方法和打印的編解碼器的名稱,並得到: 內置BMP編解碼器, 內置GIF編解碼器, 內置TIFF編解碼器, 內置PNG編解碼器, 我猜我」 m缺少一個jpg編碼器?我如何着手在我的Windows 2003服務器上安裝jpg編碼器? – user1 2014-09-04 14:46:54

+0

是的。不幸的是,我對這個具體情況一無所知。你可以嘗試安裝這個:http://support.microsoft.com/kb/958911(但是如果它導致問題,請不要責怪我:-) – RenniePet 2014-09-04 14:53:48

回答

2

的修復程序,這是明確地使用SetQuery的元數據... 例如:

BitmapMetadata jpgData = new BitmapMetadata("jpg"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/object name", "Test Title"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/keywords", "Test Tag"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/date created", "20090512"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/time created", "115300-0800"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/caption", "Test Comment"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/by-line", "Test Author"); 
jpgData.SetQuery("/app13/irb/8bimiptc/iptc/copyright notice", "Copyright 2009"); 

從評論this link

這是因爲WIC在Windows Server 2003中使用與Windows 7/8不一樣,無法更新。等metadata.Title等拋出notfoundexception

相關問題