如何获取图像文件数组,然后在javascript中重新缩放它们?
我正确的做法是用单个图像文件抓取单独的列,然后重新缩放它们。不过,这次我想抓取图像数组并缩放其中的图像,然后最终将修改后的数组存储在数据库中 代码如下:如何获取图像文件数组,然后在javascript中重新缩放它们?,javascript,arrays,parse-platform,Javascript,Arrays,Parse Platform,我正确的做法是用单个图像文件抓取单独的列,然后重新缩放它们。不过,这次我想抓取图像数组并缩放其中的图像,然后最终将修改后的数组存储在数据库中 代码如下: var Image = require("parse-image"); Pars e.Cloud.beforeSave("Activity", function(request, response) { var imagePromises = []; var activity = request.object
var Image = require("parse-image");
Pars
e.Cloud.beforeSave("Activity", function(request, response) {
var imagePromises = [];
var activity = request.object;
// you said "image" is always populated, so always add it
imagePromises.push(createImagePromise(activity, "image1", activity.get("image1").url()));
// now conditionally add the other promises, using a loop to further reduce repeated code
for (var i = 2; i < 7; i++) {
var imageColumn = "image" + i;
if (activity.get(imageColumn) && activity.get(imageColumn).url()) {
imagePromises.push(createImagePromise(activity, imageColumn, activity.get(imageColumn).url()));
}
}
// now we have all the promises, wait for them all to finish before we're done
Parse.Promise.when(imagePromises).then(function () {
response.success();
}, function (error) {
response.error(error);
});
function createImagePromise(activity, imageColumn, url) {
// we want to return the promise
return Parse.Cloud.httpRequest({
url: url
}).then(function(response) {
var image = new Image();
return image.setData(response.buffer);
}).then(function(image) {
// Resize the image.
return image.scale({
width: 110,
height: 110
});
}).then(function(image) {
// Make sure it's a JPEG to save disk space and bandwidth.
return image.setFormat("JPEG");
}).then(function(image) {
// Get the image data in a Buffer.
return image.data();
}).then(function(buffer) {
// Save the image into a new file.
var base64 = buffer.toString("base64");
var cropped = new Parse.File("image.jpg", { base64: base64 });
return cropped.save();
}).then(function (cropped) {
// Attach the image file to the original object.
activity.set(imageColumn, cropped);
});
}
});
var Image=require(“解析图像”);
帕斯
e、 Cloud.beforeSave(“活动”、函数(请求、响应){
var=[];
var activity=request.object;
//你说过“图像”总是填充的,所以总是添加它
push(createImagePromise(activity,“image1”,activity.get(“image1”).url());
//现在有条件地添加其他承诺,使用循环进一步减少重复代码
对于(变量i=2;i<7;i++){
var imageColumn=“image”+i;
if(activity.get(imageColumn)和&activity.get(imageColumn.url()){
push(createImagePromise(activity,imageColumn,activity.get(imageColumn.url());
}
}
//现在我们有了所有的承诺,等它们都完成了再做
Parse.Promise.when(imagePromises).then(函数(){
回答:success();
},函数(错误){
响应。错误(error);
});
函数createImagePromise(活动、imageColumn、url){
//我们要回报这个承诺
返回Parse.Cloud.httpRequest({
url:url
}).然后(功能(响应){
var image=新图像();
返回image.setData(response.buffer);
}).然后(函数(图像){
//调整图像大小。
返回图像比例({
宽度:110,
身高:110
});
}).然后(函数(图像){
//确保它是JPEG格式,以节省磁盘空间和带宽。
返回image.setFormat(“JPEG”);
}).然后(函数(图像){
//获取缓冲区中的图像数据。
返回image.data();
}).then(功能(缓冲区){
//将图像保存到新文件中。
var base64=buffer.toString(“base64”);
var cropped=newparse.File(“image.jpg”,{base64:base64});
返回裁剪后的.save();
}).然后(函数(裁剪){
//将图像文件附着到原始对象。
activity.set(imageColumn,裁剪);
});
}
});
我的数据库“images”中有一个字段,它包含一个图像数组
如果能帮上忙,我将不胜感激
谢谢你的时间