login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Watermerk toevoegen

Offline JeroenI - 18/06/2009 18:37
Avatar van JeroenIPHP interesse Goedendag,

Ik probeer een watermerk toe te voegen in m'n geuploade foto's maar krijg het niet voor elkaar.
Iemand enig idee wat ik mis doe?

Alvast bedankt!

  1. move_uploaded_file($_FILES['bestand']['tmp_name'], "afbeeldingen/" . $naam);
  2. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  3. chmod("afbeeldingen/" . $naam, 0777);
  4. $naam2 = "afbeeldingen/$naam";
  5. header("Content-type: image/jpg");
  6. $tekst = "WATERMERK";
  7. $foto = imagecreatefromjpeg($naam2);
  8. $breedte = imagesx($foto);
  9. $copyright = imagecreatetruecolor($breedte,14);
  10. $kleur=imagecolorallocate($copyright,255,255,255);
  11. imagestring($copyright,2,2,0,$tekst,$kleur);
  12. imagecopy($foto,$copyright,0,0,0,0,$breedte,14);
  13. imagejpeg($foto);
  14. imagedestroy($foto);

16 antwoorden

Gesponsorde links
Offline Bart - 18/06/2009 18:51
Avatar van Bart PHP expert
JeroenI schreef:
Ik probeer een watermerk toe te voegen in m'n geuploade foto's maar krijg het niet voor elkaar.
Hoe moet het werken?
Wat voor foutmelding krijg je?
Wat heb je zelf ondernomen om achter de oorzaak van het probleem te komen?
Offline JeroenI - 18/06/2009 20:49 (laatste wijziging 18/06/2009 20:52)
Avatar van JeroenI PHP interesse Ik krijg allemaal rare tekens, en het moet werken dat wanneer de afbeelding geupload is... het watermark ook toegevoegd word.

  1. JFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" ĵ}!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ĵw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?}?=އe}.lF6 C@58~Ų=>O99xyӅB=HiږYZyai0̒HmT>W}ׂrH5]6,˩; .ᜅg> 5]K.y*O:[3Ć6+'•`H8oS2}F-]$9ڲjzγ}\[{q%ċC; IO+˱x*m7ŚEß4[.J {_ϢEOivGʇy_P† 2ܛ:Ω6qei,O.8H@vDO7ʒJ,ŢյcUK}6/(F˷bӲX>\r I-tAsJK%hؓ,yޞb?#8vS7G@Uef!xc4X+݃Zz~ڤhhԞc-+ $c&$uf_ FmSS}>KFt yi!B rK[Iu E4nA!\*3# Cs gxu}3Ue$ۆ17N2lkHl x,cGCơq#'+jzޙm_JK<ݡG )?9Rqksh|>A_LEU{kquaĽ[Ό&f#ѳеKh&T_jzY-+ WLEQ ş Ɉ-Eu?ՀɱuO ,*&?_ʛϤ 2ti7祬'MqgfE[:]00QIwQQ+g8+Vtb\cZ, Ǘ; |QV R={UppG|#H#HQǵs^;\8+ #tkG{ V9R -V+`⭋ӤǫU r3R'P:#˩d_\ϓޥb| j 9Rd΍E}p@g4|3략S?䍋o|SR/2^j9A׽S-.{ oXATNg5:Sf }r:SW.FsY"yhRMoM@RSRA7KwvljsO_̌O 8񮪀)}P`jI<sE'Ҁ9{8uILg+M)Oyz0\? {We|@fj, {ڛHW9ZnzՓc9y['] ٫Jg}؁,zKoJ7sԥ\j_6ܶ 隙>&Sb <@n +61͌=E=~%~kY:S /VyO}5 >3E؝[EpA A5 F-0r2˷+&H?ZA$J{+OOx̺==%p┨B8A($pޡ1];4t&k$pN{0¼0M"|.8] qAhExM>MRx0$곓rǧG4vc>DZl}0Al Sל"YɋQq'?·w!mNb{Ā>ϱ쀒q;(ے;׍][JF#'T!`37ҒpcI`9Qj`!X ^JھT#ҏ0pӗc# O~*
etc... Ik weet zelf niet wat ik eraan moet doen vandaar dat ik jullie hulp inschakel.
Offline Bart - 18/06/2009 20:57
Avatar van Bart PHP expert Probeer eens ob_start(); bovenaan je script te plaatsen (deze functie moet je plaatsen VOORDAT er enige vorm van headers verstuurd worden)
Offline JeroenI - 18/06/2009 20:58
Avatar van JeroenI PHP interesse Dan krijg ik nog steeds al die rare tekens.
Offline Koen - 18/06/2009 21:46
Avatar van Koen PHP expert Wat is je volledige code?
Offline JeroenI - 18/06/2009 23:11
Avatar van JeroenI PHP interesse
  1. if (isset($_FILES['bestand'])) {
  2. $path_watermerk = "watermerk.png"; // dit MOET een transparante .png zijn!!!
  3.  
  4. //De groote van het bestand vergelijken met het maximum
  5. if ($_FILES['bestand']['type'] > 3024000){
  6. exit("Je bestand " . $_FILES['bestand']['size'] . " bytes, het maximum toegelaten is 3024000 bytes");
  7. }
  8.  
  9. if($_FILES['bestand']['type'] == "image/jpeg" || $_FILES['bestand']['type'] == "image/pjpeg" || $_FILES['bestand']['type'] == "image/gif") {
  10.  
  11. $x = strtolower(substr($_FILES['bestand']['name'], -3));
  12. // De naam van de file veranderen in bv. image0
  13. $file_name = "image";
  14. $n = 0;
  15. // Check of file al bestaat, zo ja, filename verhogen
  16. while (file_exists('afbeeldingen/' . $file_name . $n . '.' . $x))
  17. {
  18. $n = $n + 1;
  19. }
  20. $file_name = $file_name . $n;
  21.  
  22. move_uploaded_file($_FILES['bestand']['tmp_name'],'afbeeldingen/' . $file_name . '.' . $x);
  23. chmod ('afbeeldingen/' . $file_name . '.' . $x, 0777);
  24. //kiezen
  25. $b = imagecreatefromjpeg('afbeeldingen/' . $file_name . '.' . $x) or die ("Jpg probleempje");
  26. $bx = imagesx($b); // Bron breedte
  27. $by = imagesy($b); // bron hoogte
  28. $lm = $b;
  29. $width=600;
  30. $temp=$bx/600;
  31. $height=$by/$temp;
  32. $datum = date("Y-m-d");
  33. $locatie = "$file_name.$x";
  34. $sql = 'INSERT INTO afbeeldingen (naam, gebruiker, toevoegdatum, omschrijving) VALUES ("'.$locatie.'", "'.$_SESSION['username'].'", "'.$datum.'", "'.$_POST['omschrijving'].'")';
  35. mysql_query($sql);
  36. if ($bx > $width) {
  37. $lm1 = imagecreatetruecolor($width ,$height) or die ("Probleem met maken van plaatje jpg");
  38. imagecopyresampled($lm1, $lm, 0, 0, 0, 0, $width, $height, $bx, $by);
  39. Imagejpeg($lm1,'afbeeldingen/' . $file_name . '.' . $x,80); //80 is jpg kwaliteit
  40. imageDestroy($lm1);
  41. imageDestroy($lm);
  42. }
  43. $watermerk = imagecreatefrompng($path_watermerk);
  44. $watermerk_width = imagesx($watermerk);
  45. $watermerk_height = imagesy($watermerk);
  46. imagecreatetruecolor($watermerk_width, $watermerk_height);
  47. $xas = $size[0] - $watermerk_width - 5;
  48. $yas = 5;
  49. $image = "afbeeldingen/$file_name.$x";
  50. imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
  51.  
  52. //--- upload image
  53. imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
  54.  
  55. imagedestroy($image);
  56. imagedestroy($watermerk);
  57.  
  58.  
  59. echo "<b>Het bestand is succesvol opgeslagen</b>";
  60. } else {
  61. echo "<b>Het bestands formaat word niet ondersteund.<br> Alleen jpg word toegelaten.</b>";
  62. }
  63. }


Dit is m.
Offline jaronneke - 19/06/2009 08:24
Avatar van jaronneke MySQL interesse een watermark-script wat ik ooit heb gevonden op phphulp ,

  1. <?php
  2. //--- zet path
  3. $path = "images/"; // met slash en chmod 777! (of lager ivm veiligheid)
  4. //--- zet max. kb's
  5. $maxkb = 40960; // 40960 gedeelt door 1024 is 40 (kb) DUS 1024 keer <aantal kb's> = $maxkb
  6. //--- watermerk path
  7. $path_watermerk = "watermerk.png"; // dit MOET een transparante .png zijn!!!
  8.  
  9. //--- bekijk of het bestand kleiner of net zo groot als 40 kb is en of de foto wel geupload is en of extentie wel .jpg of .jpeg is!
  10. if ($_POST['submit'] && $_FILES['userfile']['size'] <= $maxkb && !file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['size'] && is_uploaded_file($_FILES['userfile']['tmp_name']) && (strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" || strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg"))
  11. {
  12. //--- upload image naar $path
  13. move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
  14.  
  15. //--- transparante watermerk
  16. $watermerk = imagecreatefrompng($path_watermerk);
  17. $watermerk_width = imagesx($watermerk);
  18. $watermerk_height = imagesy($watermerk);
  19. imagecreatetruecolor($watermerk_width, $watermerk_height);
  20.  
  21. //--- orriginele image
  22. $image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
  23. $size = getimagesize($path . $_FILES['userfile']['name']);
  24.  
  25. //--- defineer de coordinaten van het watermerk - dit voorbeeld is links onder
  26. /*
  27.   bijv: geuploade plaatje: 180 x 130
  28.   watermerk groote: 50 x 16
  29.  
  30.   berekening voor coordinaten 'x' as:
  31.   180 (breedte geuploade foto) - 50 (breedte watermerk) - 5 (ruimte rechts) = 125 pixels vanaf links
  32.  
  33.   berekening voor 'y' as:
  34.   130 (hoogte geuploade foto) - 16 (hoogte watermerk) - 5 (ruimte onder) = 109 pixels vanaf boven
  35.   */
  36.  
  37. //--- dit is voor rechts boven
  38. $xas = $size[0] - $watermerk_width - 5;
  39. $yas = 5;
  40.  
  41. //--- overschrijf het 'geuploade bestand' en voeg watermerk toe
  42. imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
  43.  
  44. //--- upload image
  45. imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
  46.  
  47. imagedestroy($image);
  48. imagedestroy($watermerk);
  49.  
  50. echo "De foto is geupload. Je kunt de foto bekijken door op de onderstaande link te klikken:<br />";
  51. echo "<a href=\"" . $path . $_FILES['userfile']['name'] . "\">" . $path . $_FILES['userfile']['name'] . "</a><p>";
  52.  
  53. echo "<img src=\"" . $path . $_FILES['userfile']['name'] . "\"><p>";
  54.  
  55. echo "<a href=\"" . $_SERVER['PHP_SELF'] . "\">upload nog een foto</a>";
  56. }
  57. else
  58. {
  59. //--- errors
  60. if ($_POST['submit'])
  61. {
  62. if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
  63. echo "<b>Error! Bestand bestaat al, hernoem de foto en probeer het opnieuw.</b><p>";
  64. elseif ($_FILES['userfile']['size'] > $maxkb)
  65. echo "<b>Error! Bestand is groter dan " . $maxkb . "bytes. Verklein de foto en probeer het opnieuw</b><p>";
  66. elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg" && strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
  67. echo "<b>Error! De foto heeft een verkeerde bestandsnaam. Er mogen alleen foto's geupload worden met als bestandsnaam .jpg of .jpeg.</b><p>";
  68. else
  69. echo "<b>Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw.</b><p>";
  70. }
  71. else
  72. echo "Selecteer een foto om te uploaden. In de foto wordt automatisch het logo van PHPhulp verwerkt.<p>";
  73.  
  74. //--- formulier met enctype multipart/form-data ivm de file upload
  75. echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\" enctype=\"multipart/form-data\">";
  76. echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $maxkb . "\" />";
  77. echo "Bestand:<br />";
  78. echo "<input type=\"file\" name=\"userfile\" value=\"" . $_POST['userfile'] . "\" /><br />";
  79. echo "<input type=\"submit\" name=\"submit\" value=\"uploaden\" />";
  80. echo "</form>";
  81. }
  82.  
  83. ?>


Werkt perfect ;)
Offline Bart - 19/06/2009 09:01
Avatar van Bart PHP expert @hierboven
Je had ook even een linkje naar plaatscode kunnen posten, dit is niet echt DE manier om dat te doen.

@TS
Ik zie geen ob_start() in je script staan, hoe kun je dan zeggen dat dat niet werkt? (zoals ik al aangaf is dit van essentieel belang)
Offline Martijn - 19/06/2009 12:05 (laatste wijziging 19/06/2009 12:06)
Avatar van Martijn Crew PHP ob_start() hoeft volgens mij helemaal niet. Ik heb namelijk laatst een script gemaakt waar ik imagecopy gebruikte en dat werkte prima.

Ik denk dat het probleem is dat $copywright geen plaatje is. Probeer is imagecreatefromjpeg('plaatje.jpg') als copywright


edit: in je nieuwere versie had je dat dus al. Wat gebeurd er als je het imagecopy even weghaalt?
Offline Bart - 19/06/2009 12:10
Avatar van Bart PHP expert
DeviourSoul schreef:
ob_start() hoeft volgens mij helemaal niet. Ik heb namelijk laatst een script gemaakt waar ik imagecopy gebruikte en dat werkte prima.

Ik denk dat het probleem is dat $copywright geen plaatje is. Probeer is imagecreatefromjpeg('plaatje.jpg') als copywright


edit: in je nieuwere versie had je dat dus al. Wat gebeurd er als je het imagecopy even weghaalt?
Ik zei dat van ob_start omdat de TS in zijn eerste script gebruik maakte van header(). Dan is het weldegelijk nodig. Maar nu blijkt de TS ineens een heel ander script te gebruiken dan hij in eerste instantie deed voorkomen.. Fijn dat we er zo achter moeten komen.
Offline JeroenI - 19/06/2009 13:20
Avatar van JeroenI PHP interesse De code van Jaronneke werkt, bedankt daarvoor.

Echter is er wel 1 probleem, de watermerk, die voorzien is van een transparante achtergrond, wordt nu op de afbeelding wit. Hoe kan dit?
Offline jaronneke - 19/06/2009 15:45
Avatar van jaronneke MySQL interesse Gebruik je toevallig ie6?
Offline JeroenI - 19/06/2009 16:07
Avatar van JeroenI PHP interesse nee ie7.
Offline Allinfosrc - 19/06/2009 19:32 (laatste wijziging 19/06/2009 19:33)
Avatar van Allinfosrc Nieuw lid
JeroenI schreef:
nee ie7.

als het bij 6 en 7 niet werkt wat dacht je dan van 8.
of kijk anders in andere browsers(als je die niet hebt dowload firefox die houd zich keurig aan de regels(in tegenstelling tot IE5/6/7(8(weten we nog niet net wat te vroeg uit.))))
Offline JeroenI - 19/06/2009 22:09
Avatar van JeroenI PHP interesse Wat is makkelijker, het watermerk toevoegen wanneer de foto opgevraagd word, of het watermerk toevoegen bij het uploaden?
Offline maigel - 19/06/2009 22:33
Avatar van maigel PHP beginner
JeroenI schreef:
Wat is makkelijker, het watermerk toevoegen wanneer de foto opgevraagd word, of het watermerk toevoegen bij het uploaden?

Ik denk dat het ongeveer op hetzelfde zal neerkomen, maar misschien is bij het weergeven beter omdat je dan ook nog de foto in een "normale" vorm hebt, het nadeel is wel dat er met eventueel enkele omwegen de originele foto kan verkregen worden zonder dat je het wilt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s