【问题标题】:how to display a gif image in windows phone 7?如何在 windows phone 7 中显示 gif 图像?
【发布时间】:2012-03-01 12:10:44
【问题描述】:

我正在尝试从 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?如果是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。再次构建,它应该可以工作。

【问题讨论】:

  • 顺便说一句,我确实从imagetools.codeplex.com 尝试过这个api。但是,wp7 DLL 没有 JPG 编码器,因此控件可以显示 GIF,但不能显示 JPG。
  • 多么痛苦。 wp7 应该知道 GIF 非常流行并且仍然存在。另一方面,facebook 应该知道保持一致(所有 JPG 或所有 GIF)。我当然希望 wp7 支持开箱即用的 GIF,并且 facebook 与他们的图像更加一致。
  • 我认为我没有足够的积分来做这件事,克里斯。 :(事实上,我先尝试过。

标签: windows-phone-7


【解决方案1】:

首先使用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(图像工具)

我觉得对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多