Facebook小游戏分享图接口base64Picture
2019-03-12
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!"); });
具体实例可参考:
https://github.com/pury/SPTools/tree/master/image2base64data
By Pury.