我想使用chrome.wallpaper api将用户上传的图片设置为壁纸。
我设法使用JavaScript将上传的文件转换为ArrayBuffer,但在'数据中使用了该文件。 key导致类似于此的错误消息:
"Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'."
我使用新的Blob()将ArrayBuffer转换为blob,但是我得到了同样的错误。将其转换为字符串会导致相同的错误,但使用' object'替换为' string'。
到目前为止,在Google上搜索没有任何结果。在这种情况下,二进制格式是什么,我将如何发送它?
清单肯定有壁纸属性,我也可以通过URL设置壁纸。二元是我面临的唯一问题。
以下是我目前的代码:
app.js:
reader.addEventListener('load', function() {
chrome.runtime.sendMessage({
'action': 'new_wallpaper',
'wallpaper_data': reader.result // I've also tried new Blob([reader.result])
}, function(response) {
console.log(response);
});
}, false);
reader.readAsArrayBuffer(file);
background.js:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request.action == 'new_wallpaper') {
chrome.wallpaper.setWallpaper({
'data': request.wallpaper_data,
'layout': 'CENTER_CROPPED',
'filename': 'Wallpaper Manager',
'thumbnail': true
}, function(thumbnail) {
sendResponse(thumbnail);
});
}
return true;
});