Rudy001
Rudy001
  • 发布:2018-03-20 10:51
  • 更新:2018-03-20 17:33
  • 阅读:2089

wap2app 在iPhone 无法读取 RemoteURL 图片地址

分类:wap2app

wap2app 无法读取本地图片地址,所以转换到了RemoteURL 地址

var cmr = plus.camera.getCamera();  
    cmr.captureImage(function(p) {  
            plus.io.resolveLocalFileSystemURL(p, function(entry) {  
				var localurl = entry.toLocalURL();  
				var remoteUrl = entry.toRemoteURL();  
				getImgData(remoteUrl );  
            });  
        }, function(error) {  
            console.log("---" + "Capture image failed: " + error.message);  
        }, {filename:"_doc/camera/"}   
    );
function getImgData(path) {  
	var orientation;  
        var mime_type = "image/jpeg";  
        var image = new Image();  
	image.setAttribute('crossOrigin', 'anonymous');  
	image.src = path;  
        image.onload = function() {  
           alert(1111); //程序走不到这里,这里是用来处理图片方向和图片大小,最后转换base64发送服务端用  
        }  
}
2018-03-20 10:51 负责人:无 分享
已邀请:
Rudy001

Rudy001 (作者)

没人解决过吗

回梦無痕

回梦無痕 - 暂停服务

顺序最好换一下,先监听load。

var image = new Image();  
image .addEventListener('load' , function(){...} , false);  
image .src = path;

我之前做过类似的,大概是把图片缓存到本地,然后下次请求时直接加载本地图片,其中有一些逻辑需要获取图片高度,当时遇到的一个坑是,onload有时候不会触发。最后是直接监听img对象的高度实现了获取img的高度。
不过以上经验是移动APP中的,不是wap2app,你需要先检验wap2app中是否能够加载到你的本地图片。

  • Rudy001 (作者)

    谢谢回答,和顺序无关已测试过, 缓存也试过加随机数,wap2app加载不了本地图片,我是转换到了remoteUrl 显示的


    2018-03-20 14:27

  • 回梦無痕

    如果确定remoteUrl之后可以加载图片,那就是触发不了onload事件咯,只能换方法了。


    2018-03-20 14:31

Rudy001

Rudy001 (作者)

换了个方法,用api里的压缩处理图片又有新问题
在IOS下无法获取压缩后的base64图片数据获取到的是null, android正常

function galleryImg() {  
    plus.gallery.pick(function(path) {  
        ResizeImage(entry.toLocalURL());  
    }, function(e) {  
  
    }, {  
        filter: "image"  
    });  
}
function ResizeImage(src) {  
    var fileid = getRandid();//图片名称  
    plus.zip.compressImage({  
            src: src,  
            dst: "_doc/" + fileid + ".jpg",  
            overwrite: true,  
            width: '1000px',  
            height: 'auto',  
            format: 'jpg',  
            quality: 90  
        },  
        function(e) {  
            //这里读取压缩后的图片转base64,数据库保存用  
            var reader = new plus.io.FileReader();  
            reader.onloadend = function(e) {  
                var strimg = e.target.result; //base64图片  
                alert(strimg);// 在IOS苹果手机下测试这里是null, Android正常  
                showImg2div(strimg);  
            };  
            alert(e.target);  
            reader.readAsDataURL(e.target);  
           
        },  
        function(err) {  
             
        }  
    );  
}
  • 回梦無痕

    我是直接用了画布来实现压缩图片和转base64的,画布能一步到位。


    2018-03-20 17:18

  • Rudy001 (作者)

    回复 回梦無痕:我是wap2app, 不能加载本地图片,IOS上面不能跨域


    2018-03-20 17:21

  • 回梦無痕

    回复 Rudy001:wap2app里是可以的,我已经实现过的


    2018-03-20 17:31

Rudy001

Rudy001 (作者)

问题解决了,Android和IOS都正常,去掉协议头,不知道原因

reader.readAsDataURL(e.target.replace('file://',''));
  • 1***@163.com

    能贴一下完整的解决的代码吗,谢谢了


    2018-09-17 14:57

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