-
Notifications
You must be signed in to change notification settings - Fork 3
Badger is a simple Rails plugin that creates photo badges
License
rayvinly/badger
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Badger
======
Badger is a simple Rails plugin that creates photo badges. A site often
allows its users to upload a profile image. A profile image is just that,
an image resized to fit in a predefined space to show up in the user's
profile.
With Badger, you can have something prettier - a badge that shows the user-
uploaded image on top of another image that identifies the user as a part of
the community. We have company badges, security badges, so why not web
badges to have your users show off his/her affection for your site?
Badger works by accepting cropping parameters of the overlay image in a hash
(x1, y1, width, height), which is used to crop the overlay image. It then
resizes the cropped image to the size specified by composite_width and
composite_height in badger.yml. Finally, it places the resized image on top
of the background image at location specified by composite_x and composite_y
in badger.yml. The resulting image is saved back to either the filesystem or
Amazon S3, using attachment_fu.
Badger requires the attachment_fu plugin, ImageMagick, and MiniMagick. Also,
the JavaScript Image Cropper UI can be used to obtain the cropping parameters
from the users.
attachment_fu
http://svn.techno-weenie.net/projects/plugins/attachment_fu/
ImageMagick
http://www.imagemagick.org/script/index.php
MiniMagick
http://rubyforge.org/projects/mini-magick/
JavaScript Image Cropper UI
http://www.defusion.org.uk/code/javascript-image-cropper-ui-using-prototype-scriptaculous/
Configuration
=============
When this plugin is installed , the badger.yml will be copied to the config
directory. You need to specify the following:
background : filename of the background image, searching from
public/images
composite_x : top left corner of the overlay image location in x
composite_y : top left corner of the overlay image location in y
composite_width : width of the overlay image in pixels
composite_height : height of the overlay image in pixels
For example, I want to overlay an image on top of a background image
(badge.jpg). The box for the overlay image should be 30 pixels in width and
20 pixels in height, and it should appear at (x, y) = (60, 80) of the
background image. My badger.yml then looks like:
development:
background: badge.jpg
composite_x: 60
composite_y: 80
composite_width: 30
composite_height: 20
Example
=======
In the model that you use to store attachments:
class Photo < ActiveRecord::Base
has_attachment :content_type => :image,
:storage => :s3,
:max_size => 1.megabytes,
:resize_to => '320x200>',
:thumbnails => { :thumb => '100x100>' },
:processor => :MiniMagick
validates_as_attachment
has_badge :storage => :s3
end
In the controller:
def create_my_awesome_badge
@photo = Photo.find(params[:id])
# params[:crop_coord] is a hash with indexes x1, y1, width, height
@photo.create_badge(params[:crop_coord])
end
Improvements
============
Please feel free to submit patches for bug fixes and improvements.
Specifically, I would like to:
(1) Use something nicer than system("convert blah..."), but couldn't get it
to work. I don't think Minimagick supports compositing images, so
RMagick may have to be used, but is it worth the heavy memory
consumption?
(2) Make it more flexible (i.e. accept background image and composite
params dynamically instead of in badger.yml). Maybe pass them in the
call to create_badge?
Copyright (c) 2008 Raymond Law and Intridea, Inc., released under the MIT license
About
Badger is a simple Rails plugin that creates photo badges
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published