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:

		<form action="feltoltes.php" method="post" enctype="multipart/form-data">
			<label for="file">Fájl neve:</label>
			<input type="file" name="fajl" id="fajl" />
			<br />
			<textarea name="szoveg" cols="40" rows="6" id="szoveg"></textarea>
			<br />
			<input type="text" name="kep_cime" id="kep_cime" />
			<br />
			<input type="submit" name="submit" value="Submit" />
		</form>
feltoltes.php

<?php
$vizjel = imagecreatefrompng('vizjel.png');
$kep = imagecreatefromjpeg $_GET['fajl'];

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($vizjel);
$sy = imagesy($vizjel);

imagecopy($kep, $vizjel, imagesx($kep) - $sx - $marge_right, imagesy($kep) - $sy - $marge_bottom, 0, 0, imagesx($vizjel), imagesy($vizjel));

header('Content-type: image/png');
imagepng($kep);
imagedestroy($kep);

if ((($_FILES["fajl"]["type"] == "image/gif")
|| ($_FILES["fajl"]["type"] == "image/jpeg")
|| ($_FILES["fajl"]["type"] == "image/pjpeg"))
&& ($_FILES["fajl"]["size"] < 99999999))
  {
  if ($_FILES["fajl"]["error"] > 0)
    {
    echo "Kód: " . $_FILES["fajl"]["error"] . "<br />";
    }
  else
    {
    echo "Fájl neve: " . $_FILES["fajl"]["name"] . "<br />";
    echo "Fájl típusa: " . $_FILES["fajl"]["type"] . "<br />";
    echo "Fájl mérete: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />";
    echo "TEMP fájl: " . $_FILES["fajl"]["tmp_name"] . "<br />";

    if (file_exists("feltoltes/" . $_FILES["fajl"]["name"]))
      {
      echo $_FILES["fajl"]["name"] . " már létezik. ";
      }
    else
      {
      move_uploaded_file($_FILES["fajl"]["tmp_name"],
      "feltoltes/" . $_FILES["fajl"]["name"]);
      echo "Tárolva: " . "feltoltes/" . $_FILES["fajl"]["name"];
      }
    }
  }
else
  {
  echo "Hibás fájl.";
  }
  
$con = mysql_connect("localhost","","");
if (!$con)
  {
  die('Sikertelen csatlakozás: ' . mysql_error());
  }
mysql_select_db("almasi-angol", $con);

$sql= "INSERT INTO Kepek (Szoveg,Kep_cime,Kep_eleres) VALUES ('{$_POST['szoveg']}','{$_POST['kep_cime']}', 'feltoltes/{$_FILES['fajl']['name']}')";

if (!mysql_query($sql,$con))
  {
  die('Hiba: ' . mysql_error());
  }

mysql_close($con)
?> 
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

<?php
if ((($_FILES["fajl"]["type"] == "image/gif")
|| ($_FILES["fajl"]["type"] == "image/jpeg")
|| ($_FILES["fajl"]["type"] == "image/pjpeg"))
&& ($_FILES["fajl"]["size"] < 99999999))
  {
  if ($_FILES["fajl"]["error"] > 0)
    {
    echo "Kód: " . $_FILES["fajl"]["error"] . "<br />";
    }
  else
    {
    echo "Fájl neve: " . $_FILES["fajl"]["name"] . "<br />";
    echo "Fájl típusa: " . $_FILES["fajl"]["type"] . "<br />";
    echo "Fájl mérete: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />";
    echo "TEMP fájl: " . $_FILES["fajl"]["tmp_name"] . "<br />";

    if (file_exists("feltoltes/" . $_FILES["fajl"]["name"]))
      {
      echo $_FILES["fajl"]["name"] . " már létezik. ";
      }
    else
      {
      move_uploaded_file($_FILES["fajl"]["tmp_name"],
      "feltoltes/" . $_FILES["fajl"]["name"]);
      echo "Tárolva: " . "feltoltes/" . $_FILES["fajl"]["name"];
      }
    }
  }
else
  {
  echo "Hibás fájl.";
  }

$stamp = imagecreatefrompng('vizjel.png');
$im = imagecreatefromjpeg('feltoltes/{$_FILES["fajl"]["name"]}');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

$con = mysql_connect("localhost","","");
if (!$con)
  {
  die('Sikertelen csatlakozás: ' . mysql_error());
  }
mysql_select_db("almasi-angol", $con);

$sql= "INSERT INTO Kepek (Szoveg,Kep_cime,Kep_eleres) VALUES ('{$_POST['szoveg']}','{$_POST['kep_cime']}', 'feltoltes/{$_FILES['fajl']['name']}')";

if (!mysql_query($sql,$con))
  {
  die('Hiba: ' . mysql_error());
  }

mysql_close($con)
?>
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

<?php
require 'kuldes/funkciok.php';

if (isset ($FILES['image'])){
	$file_name = $FILES['image']['name'];
	$file_tmp = $_FILES['image']['tmp_name'];
	
	if (allowed_image($file_name) == true){
		$file_name = md5(mictrotime(true)).'.png';
		watermark_image($file_tmp, 'kep/' . $file_name);
	} else{
		echo '<p>Hiba</p>';
	}
}
?>
<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="image" />
	<input type="submit" value="OK" />
</form>
kuldes/funkciok.php

<?php
function allowed_image($file_name){
	$allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
	$file_ext = end(explode('.', $file_name));
	
	return (in_array($file_ext, $allowed_ext) == true) ? true : false;
}

function watermark_image($file, $destination){
	$watermark = imagecreatefrompng('kuldes/vizjel.png');
	$source = getimagesize($file);
	$source_mime = $source['mime'];
	
	if ($source_mime == 'image/png'){
		$image = imagecreatefrompng($file);
	} else if ($source_mime == 'image/jpeg'){
		$image = imagecreatefromjpeg($file);
	} else if ($source_mime == 'image/gif'){
		$image = imagecreatefromgif($file);
	}
	
	imagecopy($image, $watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark));
	imagepng($image, $destination);
}
?>