ugrás a tartalomhoz

Vízjelezés, majd a vízjelezett fájl elmentése

attiss94 · 2011. Okt. 6. (Cs), 19.11
Szép napot mindenkinek!
Körbenéztem pár témában, de sehol sem találtam pont ilyent. Vízjelezni szeretnék egy képet, úgy, hogy feltöltés után egyből tárolódjon (vízjelezve) egy adott mappába.

A FORM:
  1. <form action="feltoltes.php" method="post" enctype="multipart/form-data">  
  2.     <label for="file">Fájl neve:</label>  
  3.     <input type="file" name="fajl" id="fajl" />  
  4.     <br />  
  5.     <textarea name="szoveg" cols="40" rows="6" id="szoveg"></textarea>  
  6.     <br />  
  7.     <input type="text" name="kep_cime" id="kep_cime" />  
  8.     <br />  
  9.     <input type="submit" name="submit" value="Submit" />  
  10. </form>  
feltoltes.php
  1. <?php  
  2. $vizjel = imagecreatefrompng('vizjel.png');  
  3. $kep = imagecreatefromjpeg $_GET['fajl'];  
  4.   
  5. $marge_right = 10;  
  6. $marge_bottom = 10;  
  7. $sx = imagesx($vizjel);  
  8. $sy = imagesy($vizjel);  
  9.   
  10. imagecopy($kep$vizjel, imagesx($kep) - $sx - $marge_right, imagesy($kep) - $sy - $marge_bottom, 0, 0, imagesx($vizjel), imagesy($vizjel));  
  11.   
  12. header('Content-type: image/png');  
  13. imagepng($kep);  
  14. imagedestroy($kep);  
  15.   
  16. if ((($_FILES["fajl"]["type"] == "image/gif")  
  17. || ($_FILES["fajl"]["type"] == "image/jpeg")  
  18. || ($_FILES["fajl"]["type"] == "image/pjpeg"))  
  19. && ($_FILES["fajl"]["size"] < 99999999))  
  20.   {  
  21.   if ($_FILES["fajl"]["error"] > 0)  
  22.     {  
  23.     echo "Kód: " . $_FILES["fajl"]["error"] . "<br />";  
  24.     }  
  25.   else  
  26.     {  
  27.     echo "Fájl neve: " . $_FILES["fajl"]["name"] . "<br />";  
  28.     echo "Fájl típusa: " . $_FILES["fajl"]["type"] . "<br />";  
  29.     echo "Fájl mérete: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />";  
  30.     echo "TEMP fájl: " . $_FILES["fajl"]["tmp_name"] . "<br />";  
  31.   
  32.     if (file_exists("feltoltes/" . $_FILES["fajl"]["name"]))  
  33.       {  
  34.       echo $_FILES["fajl"]["name"] . " már létezik. ";  
  35.       }  
  36.     else  
  37.       {  
  38.       move_uploaded_file($_FILES["fajl"]["tmp_name"],  
  39.       "feltoltes/" . $_FILES["fajl"]["name"]);  
  40.       echo "Tárolva: " . "feltoltes/" . $_FILES["fajl"]["name"];  
  41.       }  
  42.     }  
  43.   }  
  44. else  
  45.   {  
  46.   echo "Hibás fájl.";  
  47.   }  
  48.     
  49. $con = mysql_connect("localhost","","");  
  50. if (!$con)  
  51.   {  
  52.   die('Sikertelen csatlakozás: ' . mysql_error());  
  53.   }  
  54. mysql_select_db("almasi-angol"$con);  
  55.   
  56. $sql"INSERT INTO Kepek (Szoveg,Kep_cime,Kep_eleres) VALUES ('{$_POST['szoveg']}','{$_POST['kep_cime']}', 'feltoltes/{$_FILES['fajl']['name']}')";  
  57.   
  58. if (!mysql_query($sql,$con))  
  59.   {  
  60.   die('Hiba: ' . mysql_error());  
  61.   }  
  62.   
  63. mysql_close($con)  
  64. ?>   
Tisztában vagyok vele, hogy ez így nem jó, de nem tudom, hogy hogyan tudnám tovább vinni a vízjelezett fájlt, hogy már azt kezelje, és mentse el...
A válaszokat előre is köszönöm: attiss94
 
1

Nem adod vissza

Poetro · 2011. Okt. 6. (Cs), 19.35
Pl. eleve mi a második sor? És annak mi köze a feltöltött fájlhoz? Az imagepng-nek meg tudsz adni egy elérési utat, és akkor eleve oda menti le a fájlt. Ekkor viszont neked még a fájl mentése után ki kell írnod a lementett fájlt.
3

A vízjelező részletet egy az

attiss94 · 2011. Okt. 6. (Cs), 19.48
A vízjelező részletet egy az egyben innen másoltam ki, de ahogy látom valami nagyon nem oké... A második sor nem a vízjel fájlt kéri? (Akkor valamit nagyon félreértettem...)
4

Rosszul

Poetro · 2011. Okt. 6. (Cs), 19.53
Akkor rosszul másoltad ki.
Ahogy én csinálnám:
  1. Átmozgatom a feltöltött fájlt.
  2. Betöltöm az átmozgatott fájlt képként.
  3. Rárakom a vízjelet.
  4. Elmentem a mostmár vízjelezett fájlt.
  5. Visszaadom az elmentett fájl tartalmát.
5

<?php if

attiss94 · 2011. Okt. 6. (Cs), 20.12
  1. <?php  
  2. if ((($_FILES["fajl"]["type"] == "image/gif")  
  3. || ($_FILES["fajl"]["type"] == "image/jpeg")  
  4. || ($_FILES["fajl"]["type"] == "image/pjpeg"))  
  5. && ($_FILES["fajl"]["size"] < 99999999))  
  6.   {  
  7.   if ($_FILES["fajl"]["error"] > 0)  
  8.     {  
  9.     echo "Kód: " . $_FILES["fajl"]["error"] . "<br />";  
  10.     }  
  11.   else  
  12.     {  
  13.     echo "Fájl neve: " . $_FILES["fajl"]["name"] . "<br />";  
  14.     echo "Fájl típusa: " . $_FILES["fajl"]["type"] . "<br />";  
  15.     echo "Fájl mérete: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />";  
  16.     echo "TEMP fájl: " . $_FILES["fajl"]["tmp_name"] . "<br />";  
  17.   
  18.     if (file_exists("feltoltes/" . $_FILES["fajl"]["name"]))  
  19.       {  
  20.       echo $_FILES["fajl"]["name"] . " már létezik. ";  
  21.       }  
  22.     else  
  23.       {  
  24.       move_uploaded_file($_FILES["fajl"]["tmp_name"],  
  25.       "feltoltes/" . $_FILES["fajl"]["name"]);  
  26.       echo "Tárolva: " . "feltoltes/" . $_FILES["fajl"]["name"];  
  27.       }  
  28.     }  
  29.   }  
  30. else  
  31.   {  
  32.   echo "Hibás fájl.";  
  33.   }  
  34.   
  35. $stamp = imagecreatefrompng('vizjel.png');  
  36. $im = imagecreatefromjpeg('feltoltes/{$_FILES["fajl"]["name"]}');  
  37.   
  38. $marge_right = 10;  
  39. $marge_bottom = 10;  
  40. $sx = imagesx($stamp);  
  41. $sy = imagesy($stamp);  
  42.   
  43. imagecopy($im$stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));  
  44.   
  45. header('Content-type: image/png');  
  46. imagepng($im);  
  47. imagedestroy($im);  
  48.   
  49. $con = mysql_connect("localhost","","");  
  50. if (!$con)  
  51.   {  
  52.   die('Sikertelen csatlakozás: ' . mysql_error());  
  53.   }  
  54. mysql_select_db("almasi-angol"$con);  
  55.   
  56. $sql"INSERT INTO Kepek (Szoveg,Kep_cime,Kep_eleres) VALUES ('{$_POST['szoveg']}','{$_POST['kep_cime']}', 'feltoltes/{$_FILES['fajl']['name']}')";  
  57.   
  58. if (!mysql_query($sql,$con))  
  59.   {  
  60.   die('Hiba: ' . mysql_error());  
  61.   }  
  62.   
  63. mysql_close($con)  
  64. ?>  
Ne haragudj, hogy ennyire értetlen vagyok, de nem vagyok még profi, gyakorolni kell.
Az első három pontig eljutottam, de most fogalmam sincs, hogy hogyan mentsem el...
6

imagepng($im,

attiss94 · 2011. Okt. 6. (Cs), 20.13
imagepng($im, "fajlneve.png"); ?
7

26. sor

Poetro · 2011. Okt. 6. (Cs), 21.07
A 26. sornál kell csinálni a vízjelezést, mivel csak akkor van értelme, ha feltöltötték a fájlt. Ott tudod a fájl elérési útját, amit be kell olvasni ("feltoltes/" . $_FILES["fajl"]["name"]), majd amibe menteni kell.
2

imagepng

Hidvégi Gábor · 2011. Okt. 6. (Cs), 19.37
8

wideimage

Kubi · 2011. Okt. 11. (K), 10.38
szerintem próbáld ki a wideimage-t,

itt találsz is egy példát watermarkra:

http://wideimage.sourceforge.net/examples/simple-gallery-example/

Több helyen is használom, jó és gyors kép manipuláló eszköz.
9

Ezzel a dologgal teljesen felsültem...

attiss94 · 2011. Okt. 17. (H), 16.42
Ezzel a dologgal teljesen felsültem, próbálkoztam mással, de ez sem akar üzemelni, nem tudja valaki, hogy miért?

A FORM megjelenik, kitallózom a fájlt, elküldöm, lefut, de a fájlt nem találom meg a kep mappában...

index.php
  1. <?php  
  2. require 'kuldes/funkciok.php';  
  3.   
  4. if (isset ($FILES['image'])){  
  5.     $file_name = $FILES['image']['name'];  
  6.     $file_tmp = $_FILES['image']['tmp_name'];  
  7.       
  8.     if (allowed_image($file_name) == true){  
  9.         $file_name = md5(mictrotime(true)).'.png';  
  10.         watermark_image($file_tmp'kep/' . $file_name);  
  11.     } else{  
  12.         echo '<p>Hiba</p>';  
  13.     }  
  14. }  
  15. ?>  
  16. <form action="" method="post" enctype="multipart/form-data">  
  17.     <input type="file" name="image" />  
  18.     <input type="submit" value="OK" />  
  19. </form>  
kuldes/funkciok.php
  1. <?php  
  2. function allowed_image($file_name){  
  3.     $allowed_ext = array('jpg''jpeg''png''gif');  
  4.     $file_ext = end(explode('.'$file_name));  
  5.       
  6.     return (in_array($file_ext$allowed_ext) == true) ? true : false;  
  7. }  
  8.   
  9. function watermark_image($file$destination){  
  10.     $watermark = imagecreatefrompng('kuldes/vizjel.png');  
  11.     $source = getimagesize($file);  
  12.     $source_mime = $source['mime'];  
  13.       
  14.     if ($source_mime == 'image/png'){  
  15.         $image = imagecreatefrompng($file);  
  16.     } else if ($source_mime == 'image/jpeg'){  
  17.         $image = imagecreatefromjpeg($file);  
  18.     } else if ($source_mime == 'image/gif'){  
  19.         $image = imagecreatefromgif($file);  
  20.     }  
  21.       
  22.     imagecopy($image$watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark));  
  23.     imagepng($image$destination);  
  24. }  
  25. ?>