起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4941|回复: 12

[处理中3] 保存图片Basr64编码后,怎样打开它?

[复制链接]

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
发表于 2017-5-11 13:02:21 | 显示全部楼层 |阅读模式
http://bbs.wex5.com/forum.php?mod=viewthread&tid=96220&highlight=base64
参考上面的例子,可以保存保存图片Basr64编码后,怎样打开它?
        Model.prototype.photoTakeClick = function(event) {
                if (!navigator.camera) {
                        return;
                }
                var self = this;
                navigator.camera.getPicture(onLoadImageSuccess, onLoadImageFail, {
                        destinationType : navigator.camera.DestinationType.DATA_URL,
                        allowEdit : true,
                        // quality:30,
                        // targetWidth:100,
                        // targetHeight:100,
                        saveToPhotoAlbum : true
                });

                // 拍照成功后回调
                function onLoadImageSuccess(imageData) {
                        // 图片上传
                        self.saveDataTofilesystem("yaoming.jpg", imageData);
                }

                function onLoadImageFail(error) {
                        alert(error);
                }
        };


        Model.prototype.saveDataTofilesystem = function(fileurl, Base64code) {
                var self = this;
                window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
                window.requestFileSystem(window.PERSISTENT, 0, function(fs) {
                        fs.root.getFile(fileurl, {
                                create : true
                        }, function(fileEntry) {
                                fileEntry.createWriter(function(fileWriter) {
                                        var data = self.convertBase64UrlToBlob(Base64code);
                                        fileWriter.write(data);
                                        self.file = fileEntry.toURL();
                                }, function(err) {
                                        alert("错误码 :" + err.code);
                                });
                        }, function(err) {
                                alert("错误码 :" + err.code);
                        });

                }, self.errorHandler);
        }

        Model.prototype.convertBase64UrlToBlob = function(Base64code) {
                var bytes = window.atob(base64code.split(',')[1]);
                // //去掉url的头,并转换为byte
                // var bytes = window.atob(Base64code);
                // 处理异常,将ascii码小于0的转换为大于0
                var ab = new ArrayBuffer(bytes.length);
                var ia = new Uint8Array(ab);
                for (var i = 0; i < bytes.length; i++) {
                        ia = bytes.charCodeAt(i);
                }
                return new Blob([ ab ], {
                        type : 'image/jpg'
                });
        }


上面代码可以保存(运行无错误出现),以下不能打开
        Model.prototype.button1Click = function(event) {
                var s = this.file; // 返回 file///....格式路径
                alert(s);
                open(localUrl, success, error);
                if (justep.Browser.isX5App && justep.Browser.isAndroid) {
                        window.open(s, "_system");
                } else {
                        window.open(s, '_blank', 'toolbarposition=top,location=no,enableViewportScale=yes');
                }
        }


请问那里错了??????
发表于 2017-5-11 13:44:24 | 显示全部楼层
拍照获取base64后  
http://docs.wex5.com/wex5-app-question-list-2007/
显示图片吗?

base64的字符串直接给img 的src 属性赋值就行啦!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
 楼主| 发表于 2017-5-11 15:26:36 来自手机 | 显示全部楼层
那个已看过,我目的是拍照后修剪再保存在数据库里,然后再打开预览
回复 支持 反对

使用道具 举报

发表于 2017-5-11 15:39:26 | 显示全部楼层
yygy 发表于 2017-5-11 15:26
那个已看过,我目的是拍照后修剪再保存在数据库里,然后再打开预览

先给img赋值src  图片就可以显示了!然后参考 /UI2/demo/picCut/mainActivity.w
图片裁剪后重新获取新的图片  地址!再次上传!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
 楼主| 发表于 2017-5-11 15:50:45 来自手机 | 显示全部楼层
但是我用自己的系统,没有用baas上传,是用插件transfer
回复 支持 反对

使用道具 举报

发表于 2017-5-11 16:14:17 | 显示全部楼层
yygy 发表于 2017-5-11 15:50
但是我用自己的系统,没有用baas上传,是用插件transfer

插件transfer 也可以上传啊!我的意思是你参考它的裁剪 功能实现嘛

最终获取到 图片路径 以后!再调用 插件transfer 上传图片
插件transfer 的方法你看下!就是指定文件的本地URL就可以了吧!

你需要做的是图片裁剪后存储在本地,得到它的URL
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
 楼主| 发表于 2017-5-11 17:38:56 | 显示全部楼层
先给img赋值src  图片就可以显示了!然后参考 /UI2/demo/picCut/mainActivity.w
图片裁剪后重新获取新的图片  地址!再次上传!

图片裁剪后只能获取Base64编码,怎样获取它的URL( file:///....带路径的名称)
                var result = $('.cropper-example-1 > img').cropper("getCroppedCanvas");

                var data = result.toDataURL();//Base64编码
回复 支持 反对

使用道具 举报

发表于 2017-5-11 17:51:27 | 显示全部楼层
yygy 发表于 2017-5-11 17:38
图片裁剪后只能获取Base64编码,怎样获取它的URL( file:///....带路径的名称)
                var result = $('.cropp ...

js   base64如何保存为图片到本地!
https://zhidao.baidu.com/question/368793394487977764.html

还需要自己上网查

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
 楼主| 发表于 2017-5-11 23:00:05 | 显示全部楼层
本帖最后由 yygy 于 2017-5-11 23:03 编辑

        Model.prototype.saveAs = function(Url, filename) {
                debugger;
                var blob = new Blob([ '' ], {
                        type : 'application/octet-stream'
                });
                var url = webkitURL.createObjectURL(blob);
                var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                a.href = Url;
                a.download = filename;
                var e = document.createEvent('MouseEvents');
                e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                a.dispatchEvent(e);
                webkitURL.revokeObjectURL(url);
                alert(url);//返回"http://localhost:8080/fbc3447e-617f-4d68-bb55-d9e51cb33669"不是file///........ 类型                                                                                            //怎样打开
                     if (justep.Browser.isX5App && justep.Browser.isAndroid) {                        window.open(url, "_system");
                } else {
                        window.open(url, '_blank', 'toolbarposition=top,location=no,enableViewportScale=yes');
                }
        }





回复 支持 反对

使用道具 举报

21

主题

75

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
QQ
 楼主| 发表于 2017-5-12 06:23:26 | 显示全部楼层
返回"http://localhost:8080/fbc3447e-617f-4d68-bb55-d9e51cb33669"不是file///........ 类型                                                                                       怎样再次打开
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-9 17:57 , Processed in 0.058077 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表