【发布时间】: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。用户进行了出色的演练。
在执行此用户建议之前您需要做的是从 codeplex 下载源代码。
那么你需要从http://bitmiracle.com/libjpeg/下载BitMiracle的JPEG库。
继续并进入 /src/ImageTools 目录并打开 ImageTools.Phone.sln。将 ImageTools.IO.Jpeg.Phone 项目添加到解决方案中。
当您构建解决方案时,它会抱怨找不到 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