详细问题描述
我们公司所做的app中有一项定位拍照水印功能,之前一直用Hbulider打包功能正常。最近换成HbuliderX打包,结果:ios出现照片模糊,水印差错的问题,安卓还算正常。出现此问题后,我后续换成了Hbulider打包,ios 拍照水印就恢复正常了。
[内容]
现经我私下排查发现如下问题:
1.HbuliderX使用cmr.captureImage方法拍的照片通过plus.io.resolveLocalFileSystemURL方法得到的RemoteURL和LocalURL 和URL地址,照片相对系统自带的照相成像效果 模糊很多,不太清晰,不区分安卓和苹果。
- 我们水印功能是通过画布实现的,我是使用var img = new Image()建立图像对象,因为照片因机型或者用户者横屏拍照情况不同,我未指定图片的高度和宽度。而是将 entry.toLocalURL()图片地址赋给图像对象img.src = imgurl;再读取img.width和img.height的值。结果发现图像对象img 安卓的高度、宽度正常,而苹果的高度默认是640 宽度默认是480。因为我是通过照片的高宽大小来区别横屏和坚屏拍照,来进行水印的定位。因为图片对象的高宽数据错误从而导致我们苹果定位拍照水印照片模糊和水印差错。(后续我觉得应该是图片对象的高宽数据返回错误从而导致我的水印照片模糊和差错。我把从建立图像对象时,就指定对象高宽度,如 var img = new Image(3120,4160);结果水印生成正常,但照片模糊仍旧存在,后使用plus.io.getImageInfo得知cmr.captureImage 苹果返回的照片是高度640 宽度480。拍出来的照片应该是裁剪过的)
[步骤]
苹果拍出来的照片应该是裁剪过的,默认是高度是640 宽度是480
var cmr = plus.camera.getCamera();
cmr.captureImage(function(p) {
plus.io.getImageInfo({
src: p,
success: function(image) {
console.log(JSON.stringify(image))
},
fail:function(error){
console.log(JSON.stringify(error))
}
});
}
[结果]
captureImage拍照相比系统相机而言:1.不清晰,2.苹果系统返回的照片是经裁剪的。
[期望]
1.captureImage拍照能否进一步清晰化。
- 苹果captureImage拍照得的照片能否不进行裁剪。
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
出现此问题是HBuilderX,HBuilder正常
[IDE版本号]
HBuilderX 2.5.1 之前几个版本也发现
[windows版本号]
[mac版本号]
uni-app运行环境说明
[运行端是h5或app或某个小程序?]
[运行端版本号]
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
[编译模式是老模板模式还是新的自定义组件模式?]
App运行环境说明
[Android版本号]
[iOS版本号]
不限
[手机型号]
[模拟器型号]
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]
联系方式
[QQ]
z***@foxmail.com (作者)
参数加个resolution: 'high'就行
2020-08-10 10:44