2012-02-09 49 views
0

我正在嘗試從Facebook加載圖片。如果用戶設置了個人資料圖片,那麼圖片就是jpg,但是,如果用戶沒有設置,那麼圖片就是gif格式的存根圖片。我知道wp7不支持顯示gif圖像(開箱即用)。有什麼方法可以檢測出最終的圖片是不是gif?如何在windows phone 7中顯示gif圖像?

例如,我做出這樣的BitmapImage的:

BitmapImage img = new BitmapImage(new Uri("https://graph.facebook.com/userid1/picture")) 

此URI,用戶沒有資料圖片。所以我在https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yo/r/UlIqmHJn-SK.gif上看到了一個stub gif圖像。

如果用戶確實有圖像,那麼我請求如下。

BitmapImage img = new BitmapImage(new Uri("https://graph.facebook.com/userid2/picture")) 

針對上述網址我得到帶到一個網址像這樣:https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/000000_1621037713_00000000_q.jpg

我的問題是,那麼,一旦我得到的BitmapImage對象,IMG,我能確定這是否是一個JPG或GIF?如果它是gif,我可以將它轉換爲JPG嗎?

我看了一些相關的問題,但是討論的API異步加載鏡像,這不是我想要的。此外,文件很差。

任何幫助表示讚賞。

沒關係,我按照這裏的說明:Display GIF in a WP7 application with Silverlight。用戶給了一個很好的步行通過。

  1. 在你做這個用戶建議的事情之前你需要做的是從codeplex下載源代碼。

  2. 那麼你需要從http://bitmiracle.com/libjpeg/下載BitMiracle的JPEG庫。

  3. 繼續進入/ src/ImageTools目錄並打開ImageTools.Phone.sln。將ImageTools.IO.Jpeg.Phone項目添加到解決方案。

  4. 當你構建解決方案時,它會抱怨沒有找到BitMiracle的JPEG DLL,繼續並參考該Jpeg項目的DLL。再次建立,它應該工作。

+0

順便說一下,我做試試從http://imagetools.codeplex.com這個API。但是,wp7 DLLs沒有JPG編碼器,所以控件可以顯示GIF,但不能顯示JPG。 – 2012-02-09 00:55:51

+0

真是痛苦。 wp7應該知道GIF非常受歡迎,並且仍然存在。另一方面,Facebook應該知道是一致的(無論是所有的JPG還是所有的GIF)。我當然希望wp7支持開箱即用的GIF,並且臉書更符合他們的形象。 – 2012-02-09 01:08:57

+0

我不認爲我有足夠的積分來做到這一點,但克里斯。 :(事實上,我先試了一下。 – 2012-02-09 11:19:34

回答

2

首先下載使用的HttpRequest或Web客戶端,然後轉換爲JPG或PNG從GIF(如果它是GIF)通過以下方式將圖像(任何)。

GifDecoder gd = new GifDecoder(); 
ImageTools.ExtendedImage img = new ImageTools.ExtendedImage(); 
gd.Decode(img, stream);    //stream means image stream 
PngEncoder png = new PngEncoder(); 
png.Encode(img, isoFileStreamdownload); //isoFileStreamdownload means stream, which is used to save image in image file like(image.png)) 

使用ImageTools.dll,ImageTools.IO.Gif.dll,ImageTools.IO.Png.dll(圖像工具)

,我認爲它有助於你

相關問題