api.getPicture

获取本地图片放置到服务器上或者在app中预览是app的基本功能,今天使用了APICloud框架的api.getPicture这个api获取到的本地图片预览在app中,就像上传qq头像一样,其实就是这个需求,获取本地照片(拍摄照片)设置为头像,先预览一下。

这个api的文档写的很清楚,每个参数的功能,可是其中还是有点坑的

api.getPicture({

sourceType: 'library',

encodingType: 'jpg',

mediaValue: 'pic',

destinationType: 'base64',

quality: 50,

targetWidth: 100,

targetHeight: 100

}, function(ret, err) {

if (ret) {

$api.attr($api.dom('img'),'src', ret.base64Data)

} else {

alert(JSON.stringify(err));

}

});

这个是没有坑的代码

api.getPicture({

sourceType: 'library',

encodingType: 'jpg',

mediaValue: 'pic',

destinationType: 'base64',

quality: 50,

targetWidth: 750,

targetHeight: 750

}, function(ret, err) {

if (ret) {

$api.attr($api.dom('img'),'src', ret.base64Data)

} else {

alert(JSON.stringify(err));

}

});

对比以上两段代码,第一段是官方文档给的,一开始我直接拷贝过来使用的时候,拿到图片后显示在页面中就会非常模糊,就像下面这样,这个问题纠结了好久,又回头仔细看了一遍文档才发现targetWidth: 750, targetHeight: 750这两个属性;官方给的都是100,我就直接拷贝过来的,然后预览图就变成下面这个样子了。

targetWidth:

类型:数字

默认值:原图宽度

描述:(可选项)压缩后的图片宽度,图片会按比例适配此宽度

targetHeight:

类型:数字

默认值:原图高度

描述:(可选项)压缩后的图片高度,图片会按比例适配此高度

如果targetWidth和targetHeight设置过小的时候(比如官方的100),图片就会照成失真,就是上面的显示结果,所以这两个属性设置不要太小,同时把quality(1-100)图片质量设置的低一点,只是预览效果,设置好这三个属性后就可以正常的预览图片了。

由于后台还没有写好,所以今天就暂时先不写上传图片了

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐