/ / Obtener byte de imagen / base64 de URL - javascript, parse.com, base64, bytearray

Obtenga la imagen byte / base64 de la URL: javascript, parse.com, base64, bytearray

Estoy buscando una solución donde pueda proporcionarURL a imagen específica y luego con Javascript recupero datos de esa imagen. Ya encontré que no puedo simplemente extraer el archivo, ¿entonces tal vez la matriz de bytes o la base64 funcionarán?

Para ser específico antes de que alguien rechace esa pregunta: quiero analizar la URL y obtener la imagen en mi servidor de cualquier forma. Hay muchas preguntas similares, pero ninguna de ellas responde a esta.

¿Para qué necesito eso? Tengo acceso a la API, donde también recibo las URL de la imagen, pero quiero que se carguen en mi servidor a través de Background Job en el servicio Parse.com (algo así como trabajo CRON). Sé cómo vincular archivos con ParseObject, pero no puedo encontrar una solución para descargar la imagen directamente a ParseCloud y vincularlo.

var Image = require("parse-image");
Parse.Cloud.job("getImagesJob", function(request, status) {
Parse.Cloud.useMasterKey();
var beerObj = Parse.Object.extend("My_class");
var query = new Parse.Query(beerObj);
query.first().then(function(objs) {
var brew = objs.get("brewery");
var bname = objs.get("beer_name");
//var fullName = brew + " " + bname;
var fullName = "Browar Name";
console.log(fullName);

return Parse.Cloud.httpRequest({
method: "GET",
url: "api server address",
headers: {
"Content-Type": "application/json;charset=utf-8"
},
params: {
q : fullName,
client_id : "...",
client_secret : "..."
}
}).then(function(httpResponse) {
var json = JSON.parse(httpResponse.text);
if(json.meta.code === 200){
if(json.response.beers.count > 0){

if(json.response.beers.items[0].beer.beer_label === "/default.png"){
console.log("brak etykiety dla " + fullName);

} else {
console.log("znaleziono etykietę dla " + fullName);
Parse.Cloud.httpRequest({ //NOT REACHING
url: json.response.beers.items[0].beer.beer_label,
success: function(response) {
// The file contents are in response.buffer.
var image = new Image();
return image.setData(response.buffer, {
success: function() {
objs.set("logo", image.data());
console.log("udalo sie dolaczyc");
},
error: function(error) {
// The image data was invalid.
console.error(error);
}
})
},
error: function(error) {
// The networking request failed.
}
});

}

} else {
// daj cokolwiek żeby się nie zacięło na jednym

console.log("Brak danych dla piwa: " + fullName);
}
}

}, function(httpResponse) {
console.error("Request failed with response code " + httpResponse.status + httpResponse.text);
});

}).then(function(obj) {
status.success("Zrobione");
}, function(error) {
status.error(error);
});
});

Respuestas

1 para la respuesta № 1

Puedes usar parse-image módulo en Cloud Code como en su documentación

var Image = require("parse-image");

Parse.Cloud.httpRequest({
url: YOUR_URL,
success: function(response) {
// The file contents are in response.buffer.
var image = new Image();
return image.setData(response.buffer, {
success: function() {
console.log("Image is " + image.width() + "x" + image.height() + ".");
},
error: function(error) {
// The image data was invalid.
}
})
},
error: function(error) {
// The networking request failed.
}
});

Con el código anterior, puede obtener datos de imagen en Buffer usando image.data(). Para obtener datos de base64, use image.data().toString("base64")