Azure: Image Magick выдает 0 Кбайт?

Я интегрировал Image Magick с Java WebApp и развернул его в службе приложений Azure. На лазури я получаю 0кб в качестве выходного изображения для изображения, в то время как это же изображение отлично преобразуется на моем локальном компьютере. Я использую im4java для интеграции с Image Magick. Ниже приведен код:

public void compressImage(String imageSource, String destinationPath) throws IOException, InterruptedException,
        IM4JavaException {
    ConvertCmd cmd = getCommand();
    // create the operation, add images and operators/options
    IMOperation op = new IMOperation();
    op.strip();
    op.interlace();
    op.addRawArgs(compressionRawArguments);
    op.gaussianBlur(compressionGaussianBlur);
    op.quality(compressedImageQuality);
    op.addImage(imageSource); // source file
    op.addImage(destinationPath); // destination file
    // execute the operation

    cmd.run(op);
}

И imageSource, и destination являются временными файлами, созданными с использованием Java. Я проверил, что файл imageSource имеет правильный размер, но после выполнения этого кода конечный файл всегда равен 0 Кб.

Посоветуйте, пожалуйста, что я могу делать не так?

1 ответ

Отвечая на мой собственный вопрос, чтобы он мог быть полезен коллегам-разработчикам, которые могут столкнуться с этой проблемой.

Служба приложений Azure обычно имеет виртуальные машины Windows Server. Вы можете проверить ОС вашего сервера в журналах веб-контейнера.

Image Magick для Windows не позволяет конвертировать удаленные URL-адреса изображений http, а для Unix System - позволяет. Моя локальная машина - MAC, поэтому она работала правильно в моей локальной системе.

2 решения этой проблемы, которые я нашел:

  1. Либо вы используете виртуальную машину Linux на Azure

  2. В своем приложении загрузите URL-адрес изображения во временный файл и укажите абсолютный путь к этому временному файлу в магии изображений для преобразования.

Я пробовал оба, и оба работают.

Другие вопросы по тегам