我正在尝试从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。用户进行了很好的演练。
在您执行此用户建议的操作之前,您需要做的是从codeplex下载源代码。
然后你需要从http://bitmiracle.com/libjpeg/下载BitMiracle的JPEG库。
继续进入/ src / ImageTools目录并打开ImageTools.Phone.sln。将ImageTools.IO.Jpeg.Phone项目添加到解决方案中。
当你构建解决方案时,它会抱怨找不到BitMiracle的JPEG dll,继续为Jpeg项目引用该DLL。再次建立,它应该工作。
答案 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(图片工具)
我认为这对你有帮助