chitosystems / silverstripe-watermarkable
Silverstripe Image Watermark
Installs: 13
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 7
Type:silverstripe-module
Requires
- silverstripe/cms: 3.*
- silverstripe/framework: 3.*
This package is auto-updated.
Last update: 2024-10-21 20:16:00 UTC
README
Extends your SilverStripe 3 site to add watermarks to your images.
Basic Usage
Extend your image class from the "WatermarkImage" class and implement the methods getWatermark
, getWatermarkPosition
and getWatermarkTransparency
.
<?php class MyImage extends WatermarkImage { // by overriding this, you can define whether to automatically add the watermark or not // (this can also be controlled in templates for every single image) protected $addWatermark = true; /** * @return Image */ public function getWatermark() { // in this example we assume has an image named "Watermark" $siteConfig = SiteConfig::current_site_config(); if ($siteConfig->Watermark()) { return $siteConfig->Watermark(); } return null; } /** * @return int */ public function getWatermarkPosition() { // return the position at which the watermark should appear on the image // can be 1 to 9 (representing the positions on your number pad) return 3; // bottom right } /** * @return int */ public function getWatermarkTransparency() { // return the transparency of the watermark // can be 0 to 100 (0 = fully transparent, 100 = no transparency) return 90; } }
In your DataObject, use class MyImage
instead of Image
for your images.
<?php class MyDataObject extends DataObject { public static $has_one = array( 'CoverImage' => 'MyImage' ); public static $has_many = array( 'Images' => 'MyImage' ); }
Template Usage
In your templates, you can switch on and off the watermark:
<% with $CoverImage %> <!-- this image will have a watermark, if $addWatermark (from the first example) is set to true, otherwise the watermark is omitted --> <img src="$SetRatioSize(400, 300).URL" /> <% end_with %> <% loop Images %> <!-- example: we do not want the watermark to appear on thumbnails, but we want it on our big images --> <a href="$WithWatermark.SetRatioSize(800, 800).URL"> <img src="$WithoutWatermark.CroppedImage(100, 100).URL" /> </a> <% end_loop %>
Add watermark to standard images
You can also add a watermark to an image explicitly in PHP:
// assuming we have a $has_one = array('Image' => 'Image') $this->Image()->addWatermark($watermarkImageObject, $watermarkPosition, $watermarkTransparency);
You are welcome to improve this module and send me your Pull Requests.