2

I am trying to use Jmagick in my AWS Lambda Java code. So far I have done following:

  1. Compiled ImageMagick and Jmagick source on Amazon Linux EC2 and generated .so libraries.

  2. Wrote following code for my Java Lambda on my Windows PC (using ImageMagick and 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. Packaged the .so libraries into Lambda deployment package (I am using jar as deployment package).

  4. The code works fine on my PC, but on Lambda it is not generating any image file. Logically there should be one generated at /tmp/newImage.jpg. Also I cannot see any Exception/error in the Lambda logs which.

Is there anything I am doing wrong? What can I do further? If anyone especially with experience in ImagaMagick and Lambda could help, I will be thankful.

Talenel
  • 422
  • 2
  • 6
  • 25

0 Answers0