вызов imagemagick «идентифицировать» с облачными функциями Google - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь использовать 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.

Почему отождествление ищет другой файл, а не то, что, как я (думаю) я сказал, нужно искать? В конце концов, я собираюсь изменить размер изображения и записать его обратно в облачное хранилище, но я хотел получить идентификацию для запуска в первую очередь ..

1 Ответ

0 голосов
/ 07 мая 2019

У Марка был правильный ответ - если я загружаю файл jpg, он работает.На следующий вызов.

...