Я пытаюсь использовать imagemagick в своей функции Google Cloud. Функция запускается путем загрузки файла в корзину Google Cloud Storage. У меня есть более грандиозные планы, но я пытаюсь добраться туда по одному шагу за раз. Начиная с идентификации.
// imagemagick_setup
const gm = require('gm').subClass({imageMagick: true});
const path = require('path');
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
exports.processListingImage = (event, context) => {
const object = event.data || event; // Node 6: event.data === Node 8+: event
const filename = object.name;
console.log("Filename: ", filename);
const fullFileObject = storage.bucket(object.bucket).file(object.name);
console.log("Calling resize function");
let resizePromise = resizeImage( fullFileObject );
<more stuff>
};
function resizeImage( file, sizes ) {
const tempLocalPath = `/tmp/${path.parse(file.name).base}`;
return file
.download({destination: tempLocalPath})
.catch(err => {
console.error('Failed to download file.', err);
return Promise.reject(err);
})
.then( () => {
// file now downloaded, get it's metadata
return new Promise((resolve, reject) => {
gm( tempLocalPath )
.identify( (err, result) => {
if (err)
{
console.log("Error reading metadata: ", err);
}
else
{
console.log("Well, there seems to be metadata: ", result);
}
});
});
});
} // end resizeImage()
Путь к локальному файлу: "/tmp/andy-test.raw". Но когда запускается функция идентификации, я получаю сообщение об ошибке:
identify-im6.q16: unable to open image `/tmp/magick-12MgKrSna0qp9U.ppm': No such file or directory @ error/blob.c/OpenBlob/2701.
Почему отождествление ищет другой файл, а не то, что, как я (думаю) я сказал, нужно искать? В конце концов, я собираюсь изменить размер изображения и записать его обратно в облачное хранилище, но я хотел получить идентификацию для запуска в первую очередь ..