序言
前几日用 QML 做两个单纯的 android 流程,须要关上 android智能手机邻近地区相片,原先是两个非常单纯的机能,但遇到许多坑虽说的被坑了两把,不过在网路上并没找出有关的文档格式,这儿做个归纳,未来遇到反之亦然难题的人能绕过那个坑。
节录
关上邻近地区文档
具体来说上看呵呵关上邻近地区相片的形式,上看个单纯的实例:
import QtQuick 2.9 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 title: qsTr(“Hello World”) Image { id: name anchors.fill: parent source: “file:///storage/emulated/0/Download/1.png” } }那个流程够单纯的了吧,须要特别注意的是,关上邻近地区相片,须要在方向后面加进“file:///”,无法间接写方向。
接着,校对->运转,保证该产品目录下为这张相片。
不过我遇到的坑就在这儿,不管怎样都难以表明这张相片,
间接收起:
QML Image: Error decoding: file:///storage/emulated/0/Download/1.png: Unable to read image data我特么一度在怀疑自己这种写法是不是有难题,接着各种查资料,就是找不到难题所在。
就在一筹莫展的时候,灵机一转,换了张相片,发现特么的竟然能了,这就让我一脸懵逼了,怎么都没想到竟然是相片的难题,可这张相片明明在邻近地区是能关上的啊,相片是在其他客户端截图上传并在本机通过 http 从服务器下载的 png 格式,反正就是难以读取到 QML 中使用。好在难题解决了,换成了 重新下载jpg 格式的相片就没难题。最终还是把锅推给这张相片了。
OK,接下上看其他两种更单纯的读取相片形式;
import QtQuick 2.9 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 title: qsTr(“Hello World”) Image { id: name anchors.fill: parent source: “qrc:/skin/1.jpg” } }与第一种形式不同的是,引用天然资源文档时时以“qrc:/”开头。这种形式最常用。
关上 asserts 产品目录下的文档
Android原生开发中的天然资源文档大致分为两种,一种是res产品目录下存放的可校对的天然资源文档,另一种是 asserts 产品目录下的用来存放原生的天然资源相片,系统在校对的时候不会校对assets下的天然资源文档,在用 Qt 做 Android 开发的时候,如果不想将相片放到 Resource 天然资源文档中进行校对,那就能放到 asserts 产品目录下去。
引用形式如下:
import QtQuick 2.9 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 title: qsTr(“Hello World”) Image { id: name anchors.fill: parent source:“assets:/skin/1.png” } }要想引用 assets 中的天然资源,先要将相片天然资源放到该产品目录下去,在 Qt 的工程文档 pro 中加进:
imgs.files +=/skin/* imgs.path = /assets/skin INSTALLS += imgs归纳
上面说了三种在 Qt for Android 开发的时候读取相片天然资源的三种形式,其实每种形式的应用场景都不太一样,所以在开发过程中都有可能会遇到。
其中第一种形式,通常针对引用 Android 智能手机邻近地区已经存在的相片,比如要做相片浏览机能,这就是关上邻近地区相片,只能用file:///的形式来引用。
第二种和第三种方法,通常针对软件中的许多图标天然资源引用,比如说某个按钮的相片,区别就是第二种是在校对的是间接将相片打包进安装文档中,这就和 android 原生开发中的天然资源 res 一样,而第三种形式在校对的时候不会校对天然资源文档,所以解压安装包后能间接找出该产品目录下包含的图标。
OK,至此介绍完了三种方法,如果在引用的时候出现难以读取的情况,具体来说检查调用形式是否正确,其次看方向是否正确,如果都没难题,不妨换一张相片,有可能是相片的难题。
【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】
点击这儿:「链接」