-
Notifications
You must be signed in to change notification settings - Fork 53
OperatorImageOverlay
Squeegy edited this page Sep 12, 2010
·
5 revisions
image_overlay(image_overlay_path, options = {})
Adds an overlay to the base image. It’s useful for things like attaching a logo, watermark, or even a border to the image. It will work best with a 24-bit PNG with alpha channel since it will properly deal with partial transparency.
-
image_overlay_path
The path, relative toRAILS_ROOT
where the image you want superimposed can be found.
Use the following keys in the options
hash:
-
:size
The size of the overlayed image, as"123x456"
or[123, 456]
. By default the overlay is not resized before compositing. Use this option if you want to resize the overlay, perhaps to have a small logo on thumbnails and a big logo on full size images. Other than just numerical dimensions, the size parameter takes 2 special values:scale_to_fit
and:stretch_to_fit
.:scale_to_fit
will make the overlay fit as much as it can inside the image without changing the aspect ratio.:stretch_to_fit
will make the overlay the exact same size as the image but with a distorted aspect ratio to make it fit.:stretch_to_fit
is designed to add border to images.
-
:alignment
A symbol that tells Fleximage where to put the overlay. Can be any of the following::center
,:top
,:top_right
,:right
,:bottom_right
,:bottom
,:bottom_left
,:left
,:top_left
. Default is:center
.
-
:offset
The number of pixels to offset the overlay from it’s:alignment
anchor, in"123x456"
or[123, 456]
format. Useful to give a bit a space between your logo and the edge of the image, for instance. NOTE: Due to some unexpected (buggy?) RMagick behaviour:offset
will work strangely if:alignment
is set to a non-corner value, such as:top
or:center
. Using:offset
in these cases will force the overlay into a corner anyway.
-
:blending
The blending mode governs how the overlay gets composited onto the image. You can get some funky effects with modes like:copy_cyan
or:screen
. For a full list of blending modes checkout the RMagick documentation. To use a blend mode remove theCompositeOp
form the name andunserscorize
the rest. For instance,MultiplyCompositeOp
becomes:multiply
, andCopyBlackCompositeOp
becomes:copy_black
.
@photo.operate do |image|
image.image_overlay('images/my_logo_with_alpha.png',
:size => '25x25',
:alignment => :top_right,
:blending => :screen
)
end