Hoi,
ik ben bezig met een watermark op afbeeldingen te plaatsen. Dit lukt goed, enkel vervormd het soms door de grootte van de afbeeldingen.
Nu zou ik willen dat ik enkel aan de afbeeldingen een width meegeef.
Van zodra ik maar 1 variable meegeef, geeft dit een foutmelding. Hoe los ik dit het beste op?
<?php
// function die de image verkleint/vergroot en naar een specifieke locatie kopieert.
class image_watermark
{
// function die een afbeelding inlaad als image
function set_image($filename)
{
if (file_exists($filename))
{
$image_info = getimagesize($filename);
switch ($image_info["mime"])
{
case "image/jpeg" : $this->image = imagecreatefromjpeg($filename); break;
case "image/png" : $this->image = imagecreatefrompng($filename); break;
case "image/gif" : $this->image = imagecreatefromgif($filename); break;
default : echo "Error: Er is geen jpeg, png of gif afbeelding gebruikt!"; end; break;
}
}
else
{
echo "error: " . $filename . " does not exist!";
end;
}
}
// function die een afbeelding inlaad als watermark
function set_watermark($filename)
{
if (file_exists($filename))
{
$image_info = getimagesize($filename);
switch ($image_info["mime"])
{
case "image/jpeg" : $this->watermark = imagecreatefromjpeg($filename); break;
case "image/png" : $this->watermark = imagecreatefrompng($filename); break;
case "image/gif" : $this->watermark = imagecreatefromgif($filename); break;
default : echo "Error: Er is geen jpeg, png of gif afbeelding gebruikt!"; end; break;
}
}
else
{
echo "error: " . $filename . " does not exist!";
end;
}
}
// function die de image verkleint/vergroot en naar een specifieke locatie kopieert.
function push($destination, $width, $height, $options)
{
if($width==0) {$width=imagesx($this->image); $height=imagesy($this->image); }
$image = imagecreatetruecolor($width, $height);
imagecopyresampled($image, $this->image, 0, 0, 0, 0, $width, $height, imagesx($this->image), imagesy($this->image));
if($options["watermark"]==true)
{
$percentage = imagesx($this->watermark) / $width;
$watermark_width = imagesx($this->watermark) / $percentage;
$watermark_height = imagesy($this->watermark) / $percentage;
$watermark_top = $options["top"] - ($watermark_height / 2);
$watermark = imagecreatetruecolor($watermark_width, $watermark_height);
imagecopyresampled($watermark, $this->watermark, 0, 0, 0, 0, $watermark_width, $watermark_height, imagesx($this->watermark), imagesy($this->watermark));
$transparant = imagecolorallocate($watermark, 255, 0, 255); // Een kleurtje kiezen welke we transparant gaan maken
imagefill($watermark, 0, 0, $transparant); // De afbeelding volgieten met deze kleur
imagecolortransparent($watermark, $transparant); // Aangeven dat we onze gekozen kleur als transparant willen zien
// sterke/zichtbaar van het watermerk kun je hieronder instellen,het laatste getal geeft het aan in procenten 100 = volledig zichtbaar, 0 = onzichtbaar
imagecopymerge ($image, $watermark, 0, $watermark_top, 0, 0, $watermark_width, $watermark_height,80);
}
imagejpeg ($image, $destination);
}
}
// class aanroepen
$watermark = new image_watermark;
// afbeelding en watermerk inladen, let erbij op dat het watermerk de kleur #FF00FF als achtergrond heeft.
// let er ook op dat de afbeelding geen anti-aliasing gebruik, hierbij neemt een object een deel van de kleur van zijn achtergrond over,
// waardoor er bij de mengin ook een kleur word getoond en dit resulteerd in lelijke effecten.
$file = $_FILES;
if($_FILES['foto']['name'])
{
$watermark->set_image($file[foto][tmp_name]);
$watermark->set_watermark("../../temp/water.png");
$pushname = $bevestig . md5(time()+1) . ".jpg";
$watermark->push("../../pics/" . $pushname, $width, $height, array("watermark" => true, "top" => "20"));
$watermark->push("../../tumbs/" . $pushname, $width, $height, array("watermark" => true, "top" => "20"));
}
?>
1.513 views