我已将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。
请告知我可能做错什么?
答案 0 :(得分:1)
回答我自己的问题,以便对可能面临此问题的开发人员有所帮助。
Azure App Service通常具有Windows Server VM。您可以在Web容器日志中检查服务器的操作系统。
Image Magick for windows不允许转换远程http 图像网址,而对于Unix系统,它允许这样。我的本地机器是 MAC因此它在我的本地系统上正常工作。
2我发现这个问题的解决方案:
您在Azure上使用Linux VM
在您的应用程序中,将图像URL下载到临时文件和 提供该临时文件的绝对路径为图像magick 转换。
我已经尝试了两者并且都在工作。