Facebook小游戏
Facebook小游戏分享接口主要有两种:
1. FBInstant.shareAsync
可以自定义标题、分享图、传参等,发布动态,没有分享回调。
2. FBInstant.context.chooseAsync
准确说是“与好友一起玩”,切换游戏环境,有分享回调。如果要推送消息给好友,需要配合FBInstant.updateAsync进行调用。
Facebook中关于分享图的选取,必须传入base64格式字符串,而不允许传入imageUrl。
有两种思路:
一、程序中借助canvas,动态将图片资源生成对应的base64数据
var GetBase64Image = function (imageUrl, callback)
{
function getBase64(img)
{
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var dataURL = canvas.toDataURL();
canvas = null;
return dataURL;
}
var image = new Image();
image.src = imageUrl;
image.setAttribute('crossOrigin', 'anonymous');
image.onload = function(){
var base64 = getBase64(image);
console.log("[GetBase64Image] 2", base64);
callback(base64);
}
};
二、直接加载转换好的base64图片数据,省去动态转换过程,理论上更好些。
提供一个批处理:
const fs = require('fs');
const path = require('path');
const mineType = require('mime-types');
let origin = "./base64_images/";
let target = "./base64_json/";
let index = 0;
fs.readdir(origin, (err, files) => {
files.forEach(file => {
index++;
console.log(">> " + file);
var file_name = file.split(".")[0];
let filePath = path.resolve(origin + file);
let data = fs.readFileSync(filePath);
var base64Img = data.toString('base64');
base64Img = "data:image/jpg;base64," + base64Img;
fs.writeFileSync(target + file_name + ".json", JSON.stringify({"imageData": base64Img}));
});
console.log("count: " + index, "\nDone!");
});
Github参考地址:
https://github.com/pury/SPTools/tree/master/image2base64data