JS 使用 Android + IOS 相册 + 相机 进行自定义头像 + 限制裁剪后图片尺寸 + base64 string 与 图片互相转换

JS 实现:

____ js 调用 Android、IOS

    // 分平台 调用 访问相册
    onVisitPhoto : function (sender, type) {
        if (type !== ccui.Widget.TOUCH_ENDED) {
            return;
        }
        this.panelGetTexture.setVisible(false);
        
        if (cc.sys.os === cc.sys.OS_ANDROID) {
            jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "openPhoto",
                    "(III)V", this.playerIconWidth, this.playerIconHeight, this.androidTextureQuality);
        } else if (cc.sys.os === cc.sys.OS_IOS) {
            jsb.reflection.callStaticMethod("ImagePickerViewController", "openPhoto:height:quality:",
                    this.playerIconWidth, this.playerIconHeight, this.iosTextureQuality);
        }
    },

    // 分平台 调用 使用相机
    onUseCamera : function (sender, type) {
        if (type !== ccui.Widget.TOUCH_ENDED) {
            return;
        }
        this.panelGetTexture.setVisible(false);

        if (cc.sys.os === cc.sys.OS_ANDROID) {
            jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "openCamera",
                    "(III)V", this.playerIconWidth, this.playerIconHeight, this.androidTextureQuality);
        } else if (cc.sys.os === cc.sys.OS_IOS) {
            jsb.reflection.callStaticMethod("ImagePickerViewController", "openCamera:height:quality:",
                    this.playerIconWidth, this.playerIconHeight, this.iosTextureQuality);
        }
    },



____js 留给  Android、IOS 调用

var playerIconLayerObtainTextureBase64String = function (param) {
    var event;

    // 抛出获取到图片的事件
    event = new cc.EventCustom("PlayerIconLayer_ObtainTextureBase64String");
    event.setUserData(JSON.stringify(param));
    cc.eventManager.dispatchEvent(event);
};


____ js 调用 生成图片

    // 获得与生成自定义头像:     id 玩家 ID 、     newIcon 自己设置或服务器发来新头像
    idGetBase64StringToImage : function(id, newIcon) {
        var base64String;
        var fileName = jsb.fileUtils.getWritablePath() + id + ".jpg";
        
        // -------------------  不是新自定义头像且文件存在,返回 filename  -------------------
        if (newIcon !== true && jsb.fileUtils.isFileExist(fileName)) {
            return fileName;
        }
        
        // -------------------------  以下为新自定义头像     --------------------------
        
        // 没 base64 string
        base64String = this.getPlayerIconFromPlayerIconPlist(id);
        if (base64String == null) {
            return null;
        }
        
        // 生成图片
        if (cc.sys.os === cc.sys.OS_ANDROID) {
            jsb.reflection.callStaticMethod("org/cocos2dx/imagePacker/ImagePicker", "base64ToFile",
                    "(Ljava/lang/String;Ljava/lang/String;)V", base64String, fileName);
        } else if (cc.sys.os === cc.sys.OS_IOS) {
            jsb.reflection.callStaticMethod("ImagePickerViewController", "base64StringToFile:fileName:",
                    base64String, fileName);
        } else {
            jsb.fileUtils.saveBinaryFile(base64String, fileName);  // 有了这个无需前两个
        }
        
        // 有生成,就须重加载,加载不成则 返回 null
        if (cc.TextureCache.getInstance().reloadTexture(fileName) !== true) {
            return null;
        }
        
        return fileName;
    }



分平台实现:

------------------------------------------

                   Android

------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值