目录:
PowerBI显示图片的基本方法
PowerBI(以下简称PBI)可以插入单张图片,在新版界面上,如下图所示:
当然,我们更希望的是能够根据数据表显示多张图片,比如制作产品销售情况可视化的时候,一边显示产品图片,一边显示销售数量。有两个常用的控件可以实现这个效果。一个是原生默认的表格控件,一个是第三方的CardBrowser控件。要显示图片,只需增加一个图片URL的字段即可。URL,通俗来讲就是网址。拖入表格之前,需要把该字段的属性设置为图片URL。如下图所示:
PowerBI图片URL的准备方法
那么,图片URL从哪里获取?假如你所需要的图片,在网上有现成的,那么只需要选中图片,右键,复制链接,即可获得图片的URL。至于批量获得多图的URL,则需要用到爬虫技术。下面推荐一款很适用的插件——Chrome浏览器上的Fatkun Batch Download Image。该插件可以批量从网上下载图片,既可以保存图片文件,也可以导出图片URL。
下一个问题是,假如我需要显示的图片,网站上没有怎么办?那就要用到图床。图床,是专门储存图片的网上空间。知乎上有人总结了一些常见的图床(盘点国内免费好用的图床 https://zhuanlan.zhihu.com/p/35270383),如七牛云、又拍云等。上传完后可以获得图片URL。
上传专门图床网站有如下几点不足:
1. 大部分需要注册账号,大家日常账号已经够多了,可能会嫌麻烦。
2. 图床网站允许你单次批量上传的图片数量比较少,一般是10张,应付不了大批量图片。
3. 图床网站的稳定性问题,既包括他家服务器能否稳定地输出,也包括他们业务能否长期存在。
解决上述三个问题的一个好办法是,把图片上传到QQ空间的相册(或者其他类似的地方)。再用Fatkun插件导出URL。而且,即使qq空间相册设置非所有人可见,URL依然可以访问。
PowerBI显示本地图片的方法
通过URL来显示图片,好处是不需要把图片存储到PBI文件里,减轻文件大小。不足的地方也有,那就是:
1. 需要联网情况下才能显示,且需要确保你和图床服务器的网速都够快。
2. 万一网上图片不存在了,则无法显示。
因此,显示本地图片,或者说把图片数据导入PBI文件也是有必要的(尽管会增加PBI文件容量)。
正常情况下,图片无法导入PBI。但只需要把图片转成base64字符串,就可以导入了。单张图片转换字符串,可通过一些网站实现。比如这个:https://codebeautify.org/image-to-base64-converter。批量转换可在PBI里用M语言实现。M语言里有个Binary.ToText() 函数可以实现将内容转为base64。详细做法可参考微软MVP Gerhard Brueckl的这篇博客:
https://blog.gbrueckl.at/2018/01/storing-images-powerbi-analysis-services-data-models/
下面贴出核心代码:
1. 把URL转为base64的代码:
let
UrlToImage = (ImageUrl as text) as text =>
let
BinaryContent = Web.Contents(ImageUrl), //这里是获取图片URL内容,下一行代码转换
Base64 = "data:image/jpeg;base64, " & Binary.ToText(BinaryContent, BinaryEncoding.Base64)
in
Base64
in
UrlToImage
2. 把本地文件转为base的代码:
let
源=Folder.Files("D:\\Pic") //这里写本地图片所在文件夹
Base64 = Table.AddColumn(源,"Base64",each "data:image/jpeg;base64, " & Binary.ToText([Content], BinaryEncoding.Base64)
in
Base64
完整操作过程这里不再截图赘述,英文阅读不顺畅的同学可以了解这篇中文博客:https://www.shangyouw.cn/wenjian/arc29300.html
进阶的可以看这篇英文博客:
https://blog.crossjoin.co.uk/2019/05/19/storing-large-images-in-power-bi-datasets/
图片格式转换注意事项
第一点需要说明的是,本地图片转化base64,对图片大小是有要求的。图片太大,将导致显示不全,像这样只显示了一半:
PBI论坛有人提到,经过多次测试发现图片但凡超过25k,就会显示不全。详见此链接和截图。https://community.powerbi.com/t5/Desktop/Image-Visualisation-not-showing-the-full-picture/m-p/495999#M231268
第二点需要说明的是,转换出来的base64,是一个非常长的字符串。如果你用了上文提到的网站转换单张图片,得到的字符串最好不要粘贴到excel里,而是粘贴到txt或者csv或者直接pbi里面。因为excel单个单元格对字符数量的大小限制是32,767个,对于base64而言,很大概率会超出限制,导致图片显示不出来。
最后,假如你既不想把图片上传到网站上,又嫌在PQ里用M语言处理本地图片转化的学习成本有点高,也不会批量把图片控制在25kb以下,怎么办?下期,我将推出一个自己开发的免安装小软件,帮你一键批量改变图片大小并转化base64格式。敬请期待。
本文分享自 PowerBI x Python 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!