Ik ben bezig voor een project om een foto upload systeem te maken, en het geheel is opzich werkend.
De gebruiker upload een foto/plaatje bij het systeem, deze wordt dan vervolgens 2x verkleint (thumbnail en versie voor de website). Origineel wordt bewaard, maar niets opgeplaatst qua watermerk. Op zowel de thumbnail als de versie voor de website moet een watermerk met transparante rand op komen te staan.
Het plaatsen van het watermerk op die locatie werkt. Echter zit ik met een probleem wat betreft transparantie bij plaatjes die zelf ook transparant zijn.
Ik heb op internet gezocht, en kwam op de volgende dingen uit:
http://mediumexposure.com...rency-php-and-gd-library/
Hier werd het watermerk transparant, echter ook de achtergrond van het watermerk. Zeg maar
http://php.net/manual/en/function.imagecopymerge.php#52900
Aangezien er in het watermerk geen rood zit, heb ik rood gepakt ipv wit, maar daar haalt hij maar een hoekje weg. En vervangt het rode voor zwart terwijl het transparant moet zijn.
http://nl2.php.net/imagecolortransparent#85678
Hier is het watermerk goed qua transparantie, echter is het geüploade plaatje niet transparant. Maar is het transparante van het geüploade plaatje juist zwart.
Deze code heb ik nu, en geeft het watermerk de transparantie van het hele plaatje (zoals hierboven). Ipv dat hij het watermerk erop zet, zet hij het in de plaats van het achtergrond. Zo lijkt het.
Ik ben ten einde raad, en ben hier al de hele ochtend mee bezig. Iemand tips of wellicht een eventuele oplossing?
De gebruiker upload een foto/plaatje bij het systeem, deze wordt dan vervolgens 2x verkleint (thumbnail en versie voor de website). Origineel wordt bewaard, maar niets opgeplaatst qua watermerk. Op zowel de thumbnail als de versie voor de website moet een watermerk met transparante rand op komen te staan.
Het plaatsen van het watermerk op die locatie werkt. Echter zit ik met een probleem wat betreft transparantie bij plaatjes die zelf ook transparant zijn.
Ik heb op internet gezocht, en kwam op de volgende dingen uit:
http://mediumexposure.com...rency-php-and-gd-library/
Hier werd het watermerk transparant, echter ook de achtergrond van het watermerk. Zeg maar
http://php.net/manual/en/function.imagecopymerge.php#52900
Aangezien er in het watermerk geen rood zit, heb ik rood gepakt ipv wit, maar daar haalt hij maar een hoekje weg. En vervangt het rode voor zwart terwijl het transparant moet zijn.
http://nl2.php.net/imagecolortransparent#85678
Hier is het watermerk goed qua transparantie, echter is het geüploade plaatje niet transparant. Maar is het transparante van het geüploade plaatje juist zwart.
Deze code heb ik nu, en geeft het watermerk de transparantie van het hele plaatje (zoals hierboven). Ipv dat hij het watermerk erop zet, zet hij het in de plaats van het achtergrond. Zo lijkt het.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| // Breedte & hoogte berekenen, voor resize $size = calc_size($source_width, $source_height, 420, 315); // verkleining aanmaken $new_tmp = imagecreatetruecolor($size['width'], $size['height']); // uiteindelijke plaatje aanmaken $new = imagecreatetruecolor($size['width'], $size['height']); //watermark creator $watermark = imagecreatefrompng("/var/www/static/picdb_watermark.png"); //als uploadfoto een PNG is if($type == 3) { //transparantie overnemen $background = imagecolorallocate($new_tmp, 0, 0, 0); imagecolortransparent($new_tmp,$background); imagealphablending($new_tmp,false); imagesavealpha($new_tmp,true); imagealphablending($new, false); imagesavealpha($new, true); } // Verkleinen imagecopyresampled($new_tmp, $source, 0, 0, 0, 0, $size['width'], $size['height'], $source_width, $source_height); //samenvoegen imagecopy($new, $new_tmp, 0, 0, 0, 0, $size['width'], $size['height']); imagecopy($new, $watermark, 5, 5, 0, 0, 60, 59); ?> |
Ik ben ten einde raad, en ben hier al de hele ochtend mee bezig. Iemand tips of wellicht een eventuele oplossing?