Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Pesdk Android Demo | 587 | a day ago | 2 | other | Kotlin | |||||
PhotoEditor SDK: A fully customizable photo editor for your app. | ||||||||||
Cropme | 306 | 2 years ago | 24 | February 27, 2021 | 4 | apache-2.0 | Kotlin | |||
Extremely Smooth and Easy Cropping library for you | ||||||||||
Akimagecropperview | 171 | 5 | 2 years ago | 1 | October 09, 2017 | 35 | mit | Swift | ||
Responsive image cropper | ||||||||||
Pesdk Ios Build | 125 | 8 days ago | other | Swift | ||||||
PhotoEditor SDK: A fully customizable photo editor for your app. | ||||||||||
Vesdk React Native | 107 | 1 | 5 months ago | 33 | June 30, 2022 | other | TypeScript | |||
React Native module for VideoEditor SDK | ||||||||||
Vesdk Android Demo | 97 | a day ago | other | Kotlin | ||||||
VideoEditor SDK: A fully customizable video editor for your app. | ||||||||||
Pesdk React Native | 82 | 1 | 5 months ago | 33 | June 30, 2022 | other | TypeScript | |||
React Native module for PhotoEditor SDK | ||||||||||
Vesdk Ios Build | 64 | 8 days ago | other | Swift | ||||||
VideoEditor SDK: A fully customizable video editor for your app. | ||||||||||
React Native Simple Image Cropper | 34 | 2 years ago | 29 | November 15, 2020 | 13 | mit | TypeScript | |||
Bvcropphoto | 33 | 2 | 6 years ago | 3 | October 28, 2016 | 1 | gpl-2.0 | Objective-C | ||
BVCropPhoto is image cropping library for iOS. |
Image pipelines are hard; let's go ride bikes!
This is partly a reaction to looking at the imgix service, which is "not just imagemagick on ec2", and saying that "imagemagick on ec2" sounds an awful lot like something I actually want.
More specifically, this started out as something to help out the design team and ended up replacing a venerable set of cronjobs that copied images from all over, resized them, and uploaded dozens of variants to S3.
Instead, we moved to uploading original images to S3 and letting the resizing, overlays, etc happen dynamically in Giraffe.
I wanted a name with a soft G sound and I didn't have any better ideas.
giraffe
is an image processing proxy with the immediate
goal of being placed between an S3 bucket and a cloudfront distribution.
giraffe
allows you to store your high-quality original images on S3 and
do any resizing, cropping, filters, etc on demand by simply adding query
parameters to the URL for the original image.
You store original images in an s3 bucket. Something like:
s3://media.example.com/profile_pictures/1.jpg
You set up giraffe
in ec2
behind an elb
, point dns (e.g.: images.example.com
) at it, and configure it to point to your bucket.
Finally set up a new cloudfront
distribution (e.g.: hash.cloudfront.net
) to sit
in front of images.example.com
and be sure to set it to forward query strings
to origin.
Assuming your image 1.jpg
above is a 1080p image and you'd really like to just display a 100x100 thumbnail next to user_1
's comments you can do so easily by simply including the following in your markup:
<img src="http://hash.cloudfront.net/media.example.com/profile_pictures/1.jpg?w=100&h=100"
alt="profile pic" title="user_1" />
The request will hit cloudfront
(at hash.cloudfront.com
), which will turn around and hit your origin at images.example.com
. giraffe
will check for an image /profile_pictures/1.jpg
, if that exists it'll then check for the requested size image at /cache/profile_pictures/1_100_100.jpg
in s3://media.example.com
. If it finds it
it will simply return it, otherwise it'll use the original to generate the
cache
prefixed resized version.
/
/placeholders/<placeholder name>
/proxy/<HMAC>?url=<URL>
/<bucket>/<path>
Generates an image with simple placeholder text. Typically a simple box with the image size (e.g.: WxH
) as text inside it.
Supported params:
/<bucket>/path?w=1024&h=768
Supported params:
fit
include:fit=crop
. Valid values for crop
include:
flip=h
, vertically flip=v
or both flip=hv
)At a system level you'll need:
Python
(3.7+, or pypy3)ImageMagick
(remember to use --with-liblqr
if you want to be able to use content-aware resizing)For deployment with Gunicorn you may also want libev
.
You need to set the following environment variables for giraffe to work properly:
mkvirtualenv giraffe
pip install -r requirements.txt
pytest
Check out install.sh
You can now use docker to build and deploy. Simply do:
docker run -d -p 9876:9876 -e AWS_ACCESS_KEY_ID=<your access key> -e AWS_SECRET_ACCESS_KEY=<your secret access key> steder/giraffe