马克_SHI
马克_SHI
  • 发布:2015-06-05 23:59
  • 更新:2018-06-11 13:51
  • 阅读:12084

用njs如何把base64数据保存为图片(ios)

分类:Native.js
2015-06-05 23:59 负责人:无 分享
已邀请:

最佳回复

DCloud_IOS_XTY

DCloud_IOS_XTY

var NSData = plus.ios.importClass('NSData');  
var nsData = new NSData();  
var path = plus.io.convertLocalFileSystemURL('_doc/test.jpg');  
//此处传入image的base64数据  
nsData = nsData.initWithBase64EncodedStringoptions("iVBORw0KGgoAAAANSUhEUgAAABgAAAAsCAYAAAB/nHhDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8yOC8xMqLz6JEAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzVxteM2AAABJ0lEQVRYhe3Wv6rCMBQG8C/VN1AEd3HSzuYO3jr4knkY0UE62xTBcp9A8A0uHhc72CZp/lQQyZmT7xfSJKeMiPDOSt6aHoEIRKAbkLKioqiCrroWkLKi+51ARAhBlEAdXlcI0gLK8u8lPBRpAYvFjCUJUw72QZRbtFzOe0O0H7kvxHhM83yfhiJdF+2c5/utCTmdLnS93rQQs2mZQogN59lOdbrqmk7HmExGrZVYAU9kzXl2cEWsgSfys1r9Hk1TmogTAABFcTFOaQJOr6mUlVO4E9B8n2zCrQHfcAAYmoKFEAPOs39dOGMMaTpXX5J6jGlTTSu3CQcsGk5IuBboK1wJ6BqOT7gS0DUcn3AlALR7gW84YHGKiOAd3gn0UV/+6xiBCHwG8AByzMrOPKV7sAAAAABJRU5ErkJggg==",0);  
if (nsData) {  
    nsData.plusCallMethod({writeToFile:path,atomically:true});  
    plus.ios.deleteObject(nsData);  
}
  • 马克_SHI (作者)

    可以了,感谢大神的支持!!!


    2015-06-29 17:19

  • 简小单

    回复 马克_SHI:请问安卓怎么弄?


    2016-03-11 14:11

  • Johnson

    [ERROR] : TypeError: undefined is not an object (evaluating 'nsData.plusCallMethod')

    nadata是 undefined 是什么情况

    var NSData = plus.ios.importClass('NSData');

    var nsData = new NSData();

    var path = plus.io.convertLocalFileSystemURL('_doc/'+photo.fileName);

    nsData = nsData.initWithBase64EncodedStringoptions(photo.base64,0);

    nsData.plusCallMethod({writeToFile:path,atomically:true});

    plus.ios.deleteObject(nsData);

    delete photo.id;

    photo.path = path;

    photo.ownerid = task.workorderid;


    2016-07-22 16:08

  • 1***@qq.com

    支持png图片吗


    2017-04-05 12:01

  • 安小白

    保存是保存成功了,但是为甚么ios上传一直失败?


    2018-06-12 15:39

简小单

简小单

安卓已经搞定 使用BITMAP 安卓和IOS都可以使用

  • 常山赵子龙

    我也想知道 很急用 有源码吗 给看下


    2016-04-11 16:43

  • 常山赵子龙

    谢谢


    2016-04-11 16:43

  • 简小单

    /将BASE 64保存为文件/

    function saveHeadImgFile(uid,base64,quality,cback){

    var bitmap = new plus.nativeObj.Bitmap("test");

    // 从本地加载Bitmap图片

    bitmap.loadBase64Data(base64,function(){

    // console.log('加载图片成功');

    bitmap.save( "_doc/"+uid+".jpg",{overwrite:true,quality:quality},function(i){

    cback();

    // console.log('保存图片成功:'+JSON.stringify(i));

    },function(e){

    console.log('保存图片失败:'+JSON.stringify(e));

    });

    },function(e){

    console.log('加载图片失败:'+JSON.stringify(e));

    });

    }


    2016-04-13 15:14

  • 1***@qq.com

    回复 简小单:ios报错,打包时会崩溃,遇到过么


    2017-04-05 14:50

  • paper_

    回复 简小单: 请问保存后 如何能让图片显示在手机的相册中呢...


    2020-02-16 19:22

DCloud_IOS_XTY

DCloud_IOS_XTY

基本思路:
1.将base64数据转化为NSData对象
2. 使用plus.io.*Api获取保存文件路径
3. 将NSData对象写入到该文件

马克_SHI

马克_SHI (作者)

var NSData = plus.ios.importClass('NSData');
var nsData = new NSData();
var path = plus.io.convertLocalFileSystemURL('_www/test.jpg');
nsData.initWithBase64EncodedStringoptions(base64,0);
nsData.writeToFileatomically(path,true);

我这样操作的,但是写入的文件是空的,求救!!

  • DCloud_App_Array

    不建议把文件写到_www目录,在5+ API中这个目录是只读的。


    2015-06-29 15:06

  • Johnson

    我也是这样写的,文件也是空的,你解决了没 求指导啊。。。


    2016-07-22 14:50

  • t***@163.com

    亲测、5s可以生成,6s不行。


    2016-09-23 14:27

XIAOXUAN

XIAOXUAN

andriod,如何实现?

  • 目欢

    我也想知道


    2015-07-24 09:04

简小单

简小单

安卓如何实现 大神帮个忙吧!多谢

1***@qq.com
安小白

安小白

为什么ios我获取到了图片路径,然后通过这个路径上传到服务器会失败呢?安卓没问题!求大神讲解一下

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