2

我正在尝试在我的 AWS Lamda Java 代码中使用 Jmagick。到目前为止,我已经完成了以下工作:

  1. 在 Amazon Linux EC2 上编译 ImageMagick 和 Jmagick 源并生成 .so 库。
  2. 在我的 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!";
     }
    
  3. 将 .so 库打包成 Lambda 部署包(我使用 jar 作为部署包)。
  4. 该代码在我的 PC 上运行良好,但在 Lambda 上它没有生成任何图像文件。逻辑上应该在 /tmp/newImage.jpg 处生成一个。此外,我在 Lambda 日志中看不到任何异常/错误。

有什么我做错了吗?我还能做什么?如果有人特别在 ImagaMagick 和 Lamda 方面有经验可以提供帮助,我将不胜感激。

4

0 回答 0