4***@qq.com
4***@qq.com
  • 发布:2020-06-24 10:48
  • 更新:2020-06-24 17:29
  • 阅读:848

【报Bug】IOS离线打包后,从相册或拍照选中的本地图片无法显示在img或者div中

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: iOS

手机系统版本号: iOS 13.4

手机厂商: 苹果

手机机型: iphone 8s

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

galleryImg: function() {
plus.gallery.pick(function(e) {
for(var i = 0; i < e.files.length; i++) {
(function(i) {
var backImage = e.files[i];
if(autoCompress) { //如果自动压缩
var zipFileName = e.files[i].substr(e.files[i].lastIndexOf("/") + 1);
plus.zip.compressImage({
src: e.files[i],
dst: '_doc/attachments/' + zipFileName,
overwrite: true,
quality: 50,
width: "50%",
height: "50%"
}, function(zip) {
backImage = zip.target;
// backImage = backImage.replace('Library','Documents');
// alert(backImage);
vue.addImageList(backImage);
}, function(zipe) {
mui.toast('压缩失败!')
});
}
})(i);
}
alert(JSON.stringify(vue.imageList));
console.log(JSON.stringify(vue.imageList));
}, function(e) {
//outSet( "取消选择图片" );
}, {
filter: "image",
multiple: true,
maximum: maxPics - vue.imageList.length + 1,
system: false //,
});
},

预期结果:

在div或者img中正常显示,有尝试不压缩直接显示也是显示不出来

实际结果:

显示空白

bug描述:

使用同一张图片,在基座上真机调试,选择相册或拍照都能正常显示,但是离线打包后选择相同图片返回路径用div设背景图或者img设src都显示空白,但是把路径传进plus.nativeUI.previewImage可以正常查看。而且基座跟离线打包后的路径也不一致,好像是因为ios 的 WKWebview 用 <img> 元素不能显示 file:///var/mobile/Applications/<GUID of app>/Library/下的图片(视频文件也一样),只能显示 file:///var/mobile/Applications/<GUID of app>/目录下的图片。
有尝试直接把Library直接替换成Documents,无效。

2020-06-24 10:48 负责人:无 分享
已邀请:
4***@qq.com

4***@qq.com (作者)

        getImage: function(){  
                        // outSet('开始拍照:');  
                        var cmr = plus.camera.getCamera();  
                        cmr.captureImage(function(p){  
                            // outLine('成功:' p);  
                            plus.io.resolveLocalFileSystemURL(p, function(entry){  
                                var url = 'camera_image.html';  
                                w=plus.webview.create(url,url,{hardwareAccelerated:true,scrollIndicator:'none',scalable:true,bounce:'all'});  
                                w.addEventListener('loaded', function(){  
                                    w.evalJS('loadMedia("' entry.toLocalURL() '")');  
                                    //w.evalJS('loadMedia("' 'http://localhost:13131/_doc/camera/' name '")');  
                                }, false );  
                                w.addEventListener('close', function(){  
                                    w = null;  
                                }, false);  
                                w.show('pop-in');  
                            }, function(e){  
                                mui.toast('读取拍照文件错误:' e.message);  
                            });  
                        }, function(e){  
                            mui.toast('失败:' e.message);  
                        }, {filename:'_doc/camera/',index:1});  
                    },  

同样的代码在h5plus的demo工程中可以显示,但是在我自己配置的IOS离线工程内就是无效的图片资源,即使把demo里的camera.html和camera_image.html都拷贝到项目里去,还是提示无效的图片资源

4***@qq.com

4***@qq.com (作者)

问题解决了,应该是mainfest.json里旧配置有影响,用新sdk里的mainfest文件离线打包,图片显示正常了

4***@qq.com

4***@qq.com (作者)

mainfest.json里的plus节点下配置之前是“normal”,改成“liberate”能正常显示

该问题目前已经被锁定, 无法添加新回复