Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

On the fly photo processing

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 src
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 pom.xml
README.md

photon-core

On the fly photo processing

Photon-core provides a JAX-RS resource (com.thousandmemories.photon.core.PhotoResource) that processes (resizes, rotates, and crops) image files on the fly.

Read more about why we built it on our blog post (TODO: link blog post after it's live) or see it in use in an example at https://github.com/1000Memories/photon-example

PhotoResource

PhotoResource takes a path like /1234.jpg;w=200;r=180;c=130,60,200,300, fetches the image named 1234.jpg using a PhotoProvider, processes the image according the matrix parameters, and spits out the resulting image.

Matrix parameters

  • w=200: Resizes the image to be 200px wide
  • r=180: Rotates the image 90 degrees clockwise (90, 180, and 270 are the available rotation angles)
  • c=130,60,200,300: Crops the image 130px from the left, 60px from the top, with a width of 200px and a height of 300px.

PhotoProvider

PhotoResource's contructor takes an instance of PhotoProvider, which is responsible for finding the image based on the name it's given and returning an InputStream that will yield its contents. This will most often mean looking up a file in a blob store (e.g. S3 or a file system).

An example that fetches the the avatar for the named Twitter user:

public class TwitterPhotoProvider implements PhotoProvider {
    @Override
    public InputStream getPhotoInputStream(String path) throws IOException {
        return new URL("https://api.twitter.com/1/users/profile_image?size=original&screen_name=" + path).openStream();
    }
}
Something went wrong with that request. Please try again.