Azure : Image Magick 提供 0kb 输出



我已经将Image magick与Java WebApp集成在一起,并将其部署在Azure App Service上。在 azure 上,我得到 0kb 作为图像的输出图像,而相同的图像在我的本地机器上转换得很好。我正在使用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 Kb。

请告知我可能做错了什么?

回答我自己的问题,以便 它可能对可能面临此问题的开发人员有所帮助。

Azure App Service 通常具有 Windows Server VM。您可以在 Web 容器日志中检查服务器的操作系统。

Image Magick for Windows 不允许转换远程 http 图像网址,而对于Unix系统,它允许这样做。我的本地计算机是 MAC 所以它在我的本地系统上工作正常。

我发现的2个解决此问题的方法:

  1. 要么在 Azure 上使用 Linux VM

  2. 在应用程序中,将图像 URL 下载到临时文件,然后提供该临时文件的绝对路径以图像魔术转换。

我已经尝试了两者,并且都在工作。

相关内容

  • 没有找到相关文章

最新更新