文章目录
原文链接: Qt支持heic图片显示
一、背景
小孩子两岁了,最近在着手给娃做生活照纪念相册,然后就是某宝上各种聊,了解到的相册种类也是各异,价格更是良莠不齐,小几十到小几百都有,一时间还是难以下手。刚过完年那一阵偶然一次看到姐姐家给小朋友做过各式各样的相册,经过咨询发现有一家质量还不错,然后就是直接咨询商家,当时问的时候还有些小贵,主要是比我姐买的时候贵。。。。。。哈哈哈,然后就是耐心的等待啦,期间也是把小孩子一岁的照片准备好。最近这不是马上618啦,价格果然降了,而且比我姐当时定做还便宜,这还犹豫啥,果断下手。
经过跟商家简单沟通,嗯。。。没问题直接下单,然而发送照片时遇到了问题,平时娃娃的照片都是我媳妇进行拍摄的,她使用的是苹果手机,咱一个常年使用android的屌丝然后就发现苹果手机拍出来的照片格式是heic的,这里不懂的同学可点击链接进行深入了解。跟商家协商几次后,他们是只支持接收jpg格式的图片,哎,路走窄了。
想起来之前给朋友做过一个图片格式转换工具,那索性也把heic格式带上吧,说干咱就干,花了几个小时网上搜集了一部分资料,最终解决,先给大伙上效果图,嗯还不错,演示效果是使用debug模式进行,因此慢一些,不过heic格式的照片显示实际上确实比其他常见格式要慢。
二、Heic图片显示
Qt程序要显示heic的图片有两种方式,一种就是插件模式,这种方式最方便,也是使用起来最巴适的,对使用者来说是无感的;另一种方式就是自行加载heic的图片,转为image数据之后再转为pixmap进行显示。
不管是那种方式进行显示heic照片,首先要做的都是安装libheif这个库,嗯。。。怎么搞!当然是百度啦,老前辈都给咱铺好路了,咱们只需要照着做就行。这里主要参考了QT+libheif生产的QT插件基于QImageIOPlugin里面包含工程和所需要的库_HeifHandler资源-CSDN文库和C++ + QT (不使用QT插件模式)的heic图片显示。_qt heic-CSDN博客两篇文章,内容大差不差,如果你访问github速度不是很很稳定,下载资源的过程可能出现卡顿,或者下载不下来的情况,那么可以参考[vapkg]解决vcpkg下载缓慢的问题_vcpkg下载慢-CSDN博客这篇文章,主要就是把命令行需要下载的文件,咱们手动给他下载下来然后放到指定目录。通过上述三篇文章基本上就可以安装好libheif这个库,这里我就不细说每一步的演示截图,只列出关键步骤和注意事项。
heif库安装
-
下载vcpkg这个库,直接github进行克隆 ,如果一次不行多试几次应该就可以,或者直接download zip包
git clone https://github.com/microsoft/vcpkg
-
vcpkg下载完成后,命令行进入该文件夹根目录,执行bootstrap-vcpkg.bat脚本 ,并等待脚本执行完成,最终会下载一个vcpkg.exe可执行文件,之后我们通过这个可执行文件进行libheif库的编译
-
编译64位库vcpkg install libheif:x64-windows
-
编译32位库vcpkg install libheif:x86-windows
-
编译libheif库时,依赖的库会自动进行下载,这个过程比较慢,如果大家发现下载很慢,也可以根据命令行提醒,查看他正在下载的文件然后自己手动下载并放入对应目录,中断当前命令,然后在重新执行即可
-
一切顺利的话libheif库应该就会安装完