如何在Windows Phone 7中显示gif图像?

时间:2012-02-09 00:32:09

标签: windows-phone-7

我正在尝试从Facebook加载图片。如果用户设置了个人资料图片,那么图片是jpg,但是,如果用户没有设置,则图片是gif格式的存根图片。我知道wp7不支持显示gif图像(开箱即用)。有没有办法检测最终的图片是否是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获得了一个存根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?我可以将它转换为JPG,如果它是一个GIF?

我查看了一些相关问题,但讨论过的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。再次建立,它应该工作。

1 个答案:

答案 0 :(得分:2)

首先使用Httprequest或Webclient下载图像(任意),然后以下列方式从gif(如果是gif)转换为jpg或png。

 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(图片工具)

我认为这对你有帮助