HarmonyOS鸿蒙Next中为什么createImageSource返回失败,路径不对吗?
HarmonyOS鸿蒙Next中为什么createImageSource返回失败,路径不对吗?
我有一段代码,想通过图片选择器选择图片,并读取图片信息,总是报异常
async getImage() {
try {
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 1;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions).then(async (PhotoSelectResult) => {
this.imagePath = PhotoSelectResult.photoUris[0];
let imageSource = image.createImageSource(this.imagePath)
let imageInfo = await imageSource.getImageInfo()
console.log('zzz, width=' + imageInfo.size.width.toString())
}).catch((err) => {
console.error('zzz,PhotoViewPicker.select failed with err: ' + err);
});
} catch (err) {
console.error('zzz,PhotoViewPicker failed with err: ' + err);
}
}
异常信息,如下
zzz,PhotoViewPicker.select failed with err: TypeError: Cannot read property getImageInfo of undefined
很明显imageSource没有创建成功,难道是路径不对吗? 正确的路径应该怎么获取呢?
更多关于HarmonyOS鸿蒙Next中为什么createImageSource返回失败,路径不对吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你看,你申请的权限中包含ACL使能为True的权限,这个要该签名工具文件
更多关于HarmonyOS鸿蒙Next中为什么createImageSource返回失败,路径不对吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
大佬,我这边有一个问题,也是关于createImageSource创建图片源实例不成功的问题,能帮忙看一下吗,
你可以打印一下你获取的path,看看是怎么样的,可以试试我下面这个方法
//Stage模型
const context = getContext(this);
const path = context.cacheDir + "/test.jpg";
const imageSourceApi = image.createImageSource(path);
通过加LOG,看到PhotoViewPicker选择文件得到的路径是这个样子的,
PhotoSelectResult.photoUris[0]=datashare:///media/image/111
deveco中,这个test.jpg应该放在哪里啊?resources/base/media/
下吗?这个文件放在哪才能在应用运行时拷贝到context.cacheDir
目录呢?
谢谢,
希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。
那这个有点难搞,你还得把选中的图片保存到你的项目文件里面,然后通过项目文件去获取图片实例,在获取图片具体详细。
找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
申请权限了吗,
基本信息
<div>
<p>用户信息</p>
<ul>
<li><strong>用户名:</strong>张三</li>
<li><strong>邮箱:</strong><a href="mailto:zhangsan@example.com">zhangsan@example.com</a></li>
<li><strong>电话:</strong>123-456-7890</li>
</ul>
</div>
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
配置文件中申请过权限了。
module.json5
中加了,
{
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.MEDIA_LOCATION"
}
]
}
后来在代码中又加了,
const PERMISSIONS: Array<Permissions> = ['ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA', 'ohos.permission.MEDIA_LOCATION'];
this.media = mediaLibrary.getMediaLibrary(getContext(this));
await abilityAccessCtrl.createAtManager().requestPermissionsFromUser(getContext(this), PERMISSIONS);
这样也没行。
在HarmonyOS鸿蒙Next中,createImageSource
返回失败可能与路径问题有关。createImageSource
用于从指定路径创建图像源,路径可以是文件路径、资源路径或网络路径。如果路径不正确或文件不存在,函数将返回失败。
首先,检查路径是否正确。文件路径应指向设备上的有效文件,资源路径应使用正确的资源标识符,网络路径应确保URL有效且可访问。其次,确保文件或资源存在且可读。如果文件被删除或资源未正确打包,也会导致失败。
此外,权限问题也可能导致createImageSource
失败。确保应用具有读取文件或访问网络的权限。如果路径和权限都正确,但仍返回失败,可能是系统或API的bug,需进一步排查。
在HarmonyOS鸿蒙Next中,createImageSource
返回失败通常与路径问题有关。请检查以下几点:
- 路径格式:确保路径符合系统要求,如使用正确的URI或文件路径。
- 文件存在性:确认文件确实存在于指定路径。
- 权限设置:确保应用有访问该路径的权限,必要时在
config.json
中声明相关权限。 - 路径编码:避免路径中包含特殊字符,必要时进行URL编码。
如果问题依旧,建议使用调试工具检查具体错误信息。