Expand my Community achievements bar.

Attention: The Runtime, Events, Console, and App Builder sub-communities will migrate into the larger Adobe Developer Community on September 27th. This migration of content will not impact functionality.

How to check if image has clipping path in java servlet

Avatar

Level 2

I tried to get this info from image directly with twelvemonkeys libraries but it crashed my bundle. Can I get this info from metadata? Thanks.

6 Replies

Avatar

Level 4

Hi @jamesc25111500 

 

Which adobe product are you working with?

Avatar

Level 5

Hi @jamesc25111500 

 

Try this solution I hope this information will help you ! 

1. Add Dependency: Add the Apache Sanselan library to your project's dependencies. If you're using Maven, add this to your pom.xml:

 

 

<dependency>
    <groupId>org.apache.sanselan</groupId>
    <artifactId>sanselan</artifactId>
    <version>0.98</version> <!-- Use the latest version -->
</dependency>

 

 

2. Implement Servlet: Create a servlet to check if an image has a clipping path in its metadata. Replace /path/to/your/image.jpg with the actual path to your image.

 

 

import org.apache.sanselan.ImageInfo;
import org.apache.sanselan.Sanselan;
import org.apache.sanselan.formats.tiff.constants.TiffTagConstants;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/checkclippingpath")
public class CheckClippingPathServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");

        try (InputStream imageInputStream = getServletContext().getResourceAsStream("/path/to/your/image.jpg")) {
            ImageInfo imageInfo = Sanselan.getImageInfo(imageInputStream, null);

            if (imageInfo != null && imageInfo.getComments() != null) {
                boolean hasClippingPath = false;
                for (String comment : imageInfo.getComments()) {
                    if (comment.contains("Clipping Path")) {
                        hasClippingPath = true;
                        break;
                    }
                }

                if (hasClippingPath) {
                    response.getWriter().println("Image has clipping path.");
                } else {
                    response.getWriter().println("Image does not have clipping path.");
                }
            } else {
                response.getWriter().println("Image format not supported or metadata not available.");
            }
        } catch (Exception e) {
            e.printStackTrace();
            response.getWriter().println("An error occurred: " + e.getMessage());
        }
    }
}

 

 

This servlet reads the image metadata using Apache Sanselan's ImageInfo class and checks for comments that indicate the presence of a clipping path.

3. Configure Web Deployment: Make sure your servlet container (e.g., Apache Tomcat) is set up correctly to deploy and run your servlet.

4. Access the Servlet: Access the servlet in your web browser using the URL mapped to the servlet, like http://localhost:8080/your-web-app-context/checkclippingpath.

 

Thanks let me know if this works for you ! 

Avatar

Level 2

Thank you very much for the detailed information. I tried but got error for maven library:

org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.sanselan:sanselan:jar:0.98.

 

It may need to change maven settings or version. I will try to fix the issue. Thanks