Egret和Cocos跨平台保存头像

Egret:
原理,通过链接(base64或者HTTP)下载转成texture,
private mImgHead: eui.Image = new eui.Image();
RES.getResByUrl(headimgurl,
function(txtr: egret.Texture) {
if (txtr && (txtr.textureWidth > 0) && Gb.dwCustomID<=200) {
imgHead.texture = txtr;
// base64Str = imgHead.texture.toDataURL(“image/png”);//原本是可以直接将图片转成BASE64,但是手机上转换会有BUG,转过后数据会丢失,只能通过下面CANVAS截屏方法去做。
//设置图片跨域访问
var img = new Image();
var canvas = document.createElement(“canvas”);
canvas.width = 132;
canvas.height = 132;
var ctx = canvas.getContext(‘2d’);
img.crossOrigin = ‘anonymous’;
img.src = headimgurl;
document.body.appendChild(img);
img.onload = function () {
ctx.drawImage(img,0,0,132,132);
base64Str = canvas.toDataURL(‘image/png’);
img.remove();
};
}
imgHead.width = size;
imgHead.height = size;
}, this, RES.ResourceItem.TYPE_IMAGE);

Cocos:
首先通过HTTP下载资源到本地,然后创建成sprite,最后将sprit数据转换成base64,
local urlme = getBitmapPathToBase64(filepath)
local base64 = “data:image/png;base64,”…urlme

static int toLua_AppDelegate_getBitmapPathToBase64(lua_State* tolua_S)
{
bool bSuccess = false;
auto argc = lua_gettop(tolua_S);
if (1 == argc)
{
bool isNeedModifyPopupSetting = CCFileUtils::sharedFileUtils()->isPopupNotify();
//如果有提示,就暂时关闭,因为这里的读取可能找不到该文件,因为该文件有可能还没有创建
if (isNeedModifyPopupSetting)
{
CCFileUtils::sharedFileUtils()->setPopupNotify(false);
}
char* base64;
std::string path = lua_tostring(tolua_S, 1);
ssize_t len = 0;
unsigned char* data = CCFileUtils::sharedFileUtils()->getFileData(path.c_str(), “rb”, &len);
int length = base64Encode(data, len, &base64);
if (isNeedModifyPopupSetting)
{
CCFileUtils::sharedFileUtils()->setPopupNotify(true);
}
lua_pushstring(tolua_S, (char*)base64);
}
return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值