Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dux/image_resizer
fast and stable ruby image resizer
https://github.com/dux/image_resizer
Last synced: about 2 months ago
JSON representation
fast and stable ruby image resizer
- Host: GitHub
- URL: https://github.com/dux/image_resizer
- Owner: dux
- License: mit
- Created: 2014-11-11T03:21:21.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-01-19T01:19:50.000Z (almost 2 years ago)
- Last Synced: 2024-09-21T15:21:32.871Z (4 months ago)
- Language: Ruby
- Homepage:
- Size: 552 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Sinatra/ImageMagic image resizer
=====================Fast and stable image resizer, written in Ruby
Delivers `webp` images to browsers that support the format.
## To use on a client
```ruby
require "rack_image_resizer"RackImageResizer.config do |c
c.secret = "foobarbaz"
c.server = "https://resizer.myapp.com"
end# ImageResizer.build s: '^200x100'
@image.url.resized("200") # resize image width to 200px
@image.url.resized("x200") # resize image height to 200px
@image.url.resized("200x200") # resize image to fix 200x200 box
@image.url.resized("^200x200") # resize crop image width to 200x200
@image.url.resized("^200") # resize crop image width to 200x200
@image.url.resized("u^100") # resize crop image width to 100x100 and apply unsharp mask# or
@image.url.resized + '?s=x200' # dinamicly assign resize attributes
```### To add and watermark
Define `image:gravity:opacity-percent`.
Image: PNG in public folder of image resize server. Example `./public/watermark1.png`.
Gravity: None, Center, East, Forget, NorthEast, North, NorthWest, SouthEast (default), South, SouthWest, West
Opacity-percent: 30 - default.Following code will apply watermark to lower right corner of the image, width 400px.
```ruby
@image.url.resized(s: 400, w: "watermark1:SouthEast:30")
```## To force refresh image
You need to append `reload` parameter with first 5 chars of RESIZER_SECRET.
`'?reload=%s' % ENV.fetch('RESIZER_SECRET')[0,5]`
## To install on a server
Clone and bundle
```
git clone https://github.com/dux/image_resizer.git
cd image_resizer
bundle install
rspec
```add to `.env`
```
RESIZER_SECRET=...
RACK_ENV=production
RESIZER_CACHE_CLEAR=2d # clear unacceded images every 2 days
```if you want to enable image upload, define this ENV variables
```
AWS_ACCESS_KEY_ID=foo
AWS_SECRET_ACCESS_KEY=bar
AWS_REGION=eu-central-1
AWS_BUCKET=imagos
```install command line apps
```
rake install
# sudo apt install -y imagemagick pngquant jpegoptim webp
```Run via puma or passanger, it is a rack app.
## Image or file upload upload
```
RackImageResizer.upload_path is_image: true, max_width: 1000
```## All the tasks
`rake`
```
rake cc # Clear cache
rake console # Get console
rake dev # Run development server
rake install # Install dependecies
rake production # Run production server
rake rspec # Rspec test
rake test # Install dependecies
```## Run in development
`rake dev`
or
`puma -p 4000`
## URL doc
/r
* [i]mage = source image
* [s]ize = width x height
* [q]uality = quality (10 - 100)
* [w]atermark = image:gravity:opacity-percent
* on[e]error = image to show in case of error ("blank" to hide errors)/pack?image=http://.../foo.jpg&size=200
## View log
View last 2000 log entries
`/log?secret=ENV[RESIZER_SECRET]`
## why?
Small, fast & has everything a dev needs