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 решения этой проблемы, которые я нашел:
Либо вы используете виртуальную машину Linux на Azure
В своем приложении загрузите URL-адрес изображения во временный файл и укажите абсолютный путь к этому временному файлу в магии изображений для преобразования.
Я пробовал оба, и оба работают.