Parse platform 如何编写解析云代码来制作缩略图

Parse platform 如何编写解析云代码来制作缩略图,parse-platform,parse-cloud-code,Parse Platform,Parse Cloud Code,假设我有一张桌子 ---------Image------------- imageFile (File) | thumbnail (File) | Post (a pointer to Post) 你知道如何编写一个云代码,在另一个专栏中获取该图像的较小版本吗 例如,如果用户上传了(2000x3500 px)图像,Parse会将其保存在imageFile列中,并将其缩略图保存在另一列中 感谢以下是我正在使用的当前解决方案(Parse.com不久前发布了原始脚本,并在所有权转移到

假设我有一张桌子

---------Image-------------

imageFile (File)   |    thumbnail (File)  | Post (a pointer to Post)
你知道如何编写一个云代码,在另一个专栏中获取该图像的较小版本吗

例如,如果用户上传了(2000x3500 px)图像,Parse会将其保存在imageFile列中,并将其缩略图保存在另一列中


感谢

以下是我正在使用的当前解决方案(Parse.com不久前发布了原始脚本,并在所有权转移到社区后将其删除):

main.js中的用法示例:

var resizeImageKey=require('cloud/resize image key.js'),
缩略图大小=100,
图像=需要(“解析图像”);
Parse.Cloud.afterSave(“TableName”,函数(请求){
返回resizeImageKey({
object:request.object,//将保存缩略图的ParseObject
url:objectImage.url(),//全尺寸图像url
toKey:“缩略图”//缩略图的属性键
宽度:缩略图大小,//宽度
裁剪:false//调整大小还是裁剪?
});
});
resize-image-key.js(异步等待)

const Image=require(“解析图像”);
/*
原件:https://github.com/ParsePlatform/Anyimg/blob/master/parse/cloud/resize-image-key.js
从一个包含
将文件解析为具有目标宽度的新键处的文件对象。
如果图像小于目标宽度,则它只是
原封不动地复制。
对象:解析对象
url:解析文件的url
toKey:包含目标解析文件的键
宽度:目标宽度
裁剪:居中裁剪正方形
*/
module.exports=函数(选项){
let格式、原始高度、原始宽度、新高度、新宽度;
//首先获取图像数据
const response=await Parse.Cloud.httpRequest({
//url:options.object.get(options.fromKey.url())
url:options.url
})
让图像=新图像();
等待image.setData(response.buffer);
//设置将位于对象上的某些元数据
format=image.format();
原始高度=image.height();
originalWidth=image.width();
if(image.width()newHeight)){
var newHeight=options.width;
var newWidth=newHeight*image.width()/image.height();
}
//向下调整到正常宽度大小
返回图像比例({
宽度:newWidth,
高度:新高度
});
}
}).然后(函数(图像){
如果(选项.裁剪){
左向量=0;
var-top=0;
//中心作物
if(image.width()>image.height()){
var left=(image.width()-image.height())/2;
}否则{
var top=(image.height()-image.width())/2;
}
返回图像.crop({
左:左,,
顶:顶,,
宽度:options.width,
高度:options.width
});
}否则{
返回Parse.Promise.as(image);
}
}).然后(函数(图像){
newHeight=image.height();
newWidth=image.width();
//获取缓冲区中的图像数据。
返回image.data();
}).then(功能(缓冲区){
//将图像保存到新文件中。
var base64=buffer.toString(“base64”);
//var scaled=new Parse.File(“缩略图”+选项.object.get(“名称”)+“+格式{
var scaled=新的Parse.File(“缩略图”+格式{
base64:base64
});
返回scaled.save();
}).然后(函数(图像){
//在图像对象上设置元数据
options.object.set(options.toKey,image);
//返回options.object.save();
options.object.set(“缩略图宽度”,newWidth);
options.object.set(“缩略图高度”,newHeight);
});
};

更新:找到原始脚本的克隆并存档,以防万一:

可能是nodejs librarygood库,但如何将其与解析云代码一起使用?可能您需要学习nodejs,只需使用npm安装库,并将其与require(library)一起用在clode代码中。不客气,但正如我所说的,这不是我的代码:)(不确定Parse为何删除该特定回购协议)