1

我已将 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。

请告诉我我做错了什么?

4

1 回答 1

1

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

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

Windows 的 Image Magick 不允许转换远程 http 图像 url,而 Unix 系统则允许。我的本地机器是 MAC 所以它在我的本地系统上正常工作。

2 我发现的这个问题的解决方案:

  1. 在 Azure 上使用 linux VM

  2. 在您的应用程序中,将图像 URL 下载到临时文件,并将该临时文件的绝对路径提供给图像魔术师进行转换。

我都试过了,而且都在工作。

于 2016-03-23T11:04:43.667 回答