Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/1000Memories/photon-core
On the fly photo processing
https://github.com/1000Memories/photon-core
Last synced: about 2 months ago
JSON representation
On the fly photo processing
- Host: GitHub
- URL: https://github.com/1000Memories/photon-core
- Owner: 1000Memories
- License: apache-2.0
- Created: 2012-07-31T00:42:28.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2023-12-17T23:31:40.000Z (9 months ago)
- Last Synced: 2024-07-01T12:40:01.385Z (3 months ago)
- Language: Java
- Size: 7.07 MB
- Stars: 64
- Watchers: 9
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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:
```java
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();
}
}
```