我正在尝试在我的 AWS Lamda Java 代码中使用 Jmagick。到目前为止,我已经完成了以下工作:
- 在 Amazon Linux EC2 上编译 ImageMagick 和 Jmagick 源并生成 .so 库。
在我的 Windows PC 上为我的 Java Lambda 编写了以下代码(使用 ImageMagick 和 Jmagick for windows)。
public String handleRequest(Object input, Context context) { System.setProperty("jmagick.systemclassloader","false"); try { ImageInfo newImageiInfo=new ImageInfo(); newImageiInfo.setFileName("/tmp/oldImage.jpg"); newImageiInfo.setSize("512x512"); newImageiInfo.setUnits(ResolutionType.PixelsPerInchResolution); newImageiInfo.setColorspace(ColorspaceType.RGBColorspace); newImageiInfo.setBorderColor(PixelPacket.queryColorDatabase("red")); newImageiInfo.setDepth(8); MagickImage addTextImage = new MagickImage(); addTextImage.allocateImage(newImageiInfo); addTextImage.setYResolution(480); addTextImage.setXResolution(640); addTextImage.writeImage(newImageiInfo); DrawInfo aInfo = new DrawInfo(newImageiInfo); aInfo.setFont("Arial"); aInfo.setTextAntialias(true); aInfo.setText("JMagick Tutorial"); addTextImage.annotateImage(aInfo); addTextImage.setFileName("/tmp/newImage.jpg"); addTextImage.writeImage(newImageiInfo); }catch (MagickException e) { e.printStackTrace(); } UploadtoS3("/tmp/newImage.jpg"); // a simple method for Uploading return "Hello from Lambda!"; }
- 将 .so 库打包成 Lambda 部署包(我使用 jar 作为部署包)。
- 该代码在我的 PC 上运行良好,但在 Lambda 上它没有生成任何图像文件。逻辑上应该在 /tmp/newImage.jpg 处生成一个。此外,我在 Lambda 日志中看不到任何异常/错误。
有什么我做错了吗?我还能做什么?如果有人特别在 ImagaMagick 和 Lamda 方面有经验可以提供帮助,我将不胜感激。