Azure:Image Magick提供0kb输出?

时间:2016-03-03 13:04:55

标签: java azure imagemagick im4java

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

请告知我可能做错什么?

1 个答案:

答案 0 :(得分:1)

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

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

  

Image Magick for windows不允许转换远程http   图像网址,而对于Unix系统,它允许这样。我的本地机器是   MAC因此它在我的本地系统上正常工作。

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

  1. 您在Azure上使用Linux VM

  2. 在您的应用程序中,将图像URL下载到临时文件和 提供该临时文件的绝对路径为图像magick 转换。

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