Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Watermark in the picture.


Reply


6 Posts   831 Views

Avatar
MarekStu

Community Member, 4 Posts

13 September 2011 at 4:21am

Hello, I try to display the watermark on the photo. The code I created a watermark displays, unfortunately the full-page displays. Lose content, etc.
Can you tell me how to properly insert and displays a watermark in the picture? Thank you.
Sorry about my English ...

class Fotka extends DataObject {
static $db = array (
'Popis' => 'Text',
'DatumVlozeni' => 'Date'
);

static $has_one = array (
'Attachment' => 'Image',
'PodKategorie2' => 'PodKategorie2'
);

...
public function Watermark(GD $gd) {
$temp = $this->Attachment();
$watermark = imagecreatefromjpeg(Director::absoluteBaseURL().'mysite/code/water.jpg');
$imageToWatermark = imagecreatefromjpeg(Director::absoluteBaseURL().$temp->Filename);
$imagewatermark_width = imagesx($imageToWatermark);
imagecopymerge($imageToWatermark, $watermark, 39, 45, 0, 0, 400, 400, 40);
$tm = imagejpeg($imageToWatermark);
$GDoutput= new GD($temp->Filename);
// return $tm;
return $GDoutput;
}

My Template PodKategorie2.ss

$Content
<% control Fotky %>
<ul>
   <li>$Popis</li>
   <li>$DatumVlozeni</li>
   <img="$Watermark"/>
</ul>
<% end_control %>

Avatar
swaiba

Forum Moderator, 1808 Posts

13 September 2011 at 4:55am

Hi,

could you try...
return $temp->Filename;
(in Watermark)

and...
<img src="$Watermark"/>
(in the template)

instead?

Avatar
MarekStu

Community Member, 4 Posts

13 September 2011 at 5:25am

Thank you for reply, unfortunately the result is the same. I still have a page on the picture.
It's a simple thing to me:

I need to present images to all users. But for registered users will have the opportunity to download images without the watermark. So I thought the simple way is, insert a watermark ...

Avatar
swaiba

Forum Moderator, 1808 Posts

13 September 2011 at 5:37am

What is "Fotky" is that an instance of Fotka?

what you are doing looks right with the watermark code (I've used that before), but there is quite a bit of missing detail about the "PodKategorie2" page, please post that too.

Avatar
MarekStu

Community Member, 4 Posts

13 September 2011 at 5:48am

Here is

class PodKategorie2 extends Page {

static $has_many = array (
'Fotky' => 'Fotka'
);

public function getCMSFields()
{
$f = parent::getCMSFields();

$manager = new ImageDataObjectManager(
$this, // Controller
'Fotky', // Source name
'Fotka', // Source class
'Attachment', // File name on DataObject
null, // Headings
'getCMSFields_forPopup' // Detail fields
// Filter clause
// Sort clause
// Join clause
);

$f->addFieldToTab("Root.Content.Gallery",$manager);
return $f;
}
}

class PodKategorie2_Controller extends Page_Controller {

}

Avatar
MarekStu

Community Member, 4 Posts

19 September 2011 at 10:02pm

Finally, it has helped create a class WatermarkImage that inherits the image. GetWatermark method, which finally displays a watermark.

class WatermarkImage extends Image {
function getWatermark() {
$watermark = imagecreatefromjpeg(Director::absoluteBaseURL().'mysite/code/watermark.jpg');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg(str_replace('/','\\',Director::baseFolder().'/'.$this->Filename));
$size = getimagesize(str_replace('/','\\',Director::baseFolder().'/'.$this->Filename));
$dest_x = $size[0] - $watermark_width - 5;
$dest_y = $size[1] - $watermark_height - 5;
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 40);
imagejpeg($image,str_replace('/','\\',Director::baseFolder().'/'.$this->Filename));
imagedestroy($image);
imagedestroy($watermark);
}
}


in template

<% control Images %>

$Attachment.SetRatioSize(150,150)
$Attachment.getWatermark

<% end_control %>