Upload und Wasserzeichen-Script

walle_89

Mitglied
Hallo!

Ich habe mal ein Upload und Wasserzeichen-Script gebastelt, doch das mit dem Wasserzeichen will noch nicht so ganz klappen ....

PHP:
<?php
if (!$_POST['hochladen']) {
?>
<table border="0" width="100%" align="center">
	<tr>
	<td>
		<h5>Hallo <?=$user['uLogin']?>! <a href="logout.php">[Logout]</a></h5>
	</td>
	<tr>
	<td>
	<h3>Bilder-Upload</h3><hr />
	<center>
		<form enctype="multipart/form-data" action="index.php" method="post">
		Datei hochladen: <input name="userfile" type="file"><br />
		<h5>Datei darf max. 128 Kb groß sein. Unterstützte Formate: jpg</h5>
		<input name="hochladen" type="submit" value="Hochladen">
		</form>
	</center>
	</tr>
	<tr>
		<td><h3>Bisher hochgeladene Bilder</h3><hr /></td>
	</tr>
	<tr>
		<td>
			<?php
			
			$result = $db->query( "SELECT * FROM pictures" );
			while ( $pictures = $db->fetch( $result ) ) {
			
			echo "<img src='../images/pictures/";
			echo $pictures['URL'];
			echo "' width='200'>";
			
			}
			?>
		</td>
	</tr>
	</td>
	</tr>
</table>
<?php
}	elseif ( $_POST['hochladen'] ) {

	$uploaddir = '../images/pictures/';
	$format = $_FILES['userfile']['type'];
	$dateiname = $_FILES['userfile']['name'];
	$name = $_FILES['userfile']['tmp_name'];
	
	$imgsrc = imagecreatefromjpeg($name);
	$imgzeichen = imagecreatefrompng("../images/pictures/wasserzeichen.png");
	
	$width = imagesx($imgsrc);
	$height = imagesy($imgsrc);
	
	$img = imagecreatetruecolor($width, $height);
	
	imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
	
	imagecopy($img, $imgzeichen, 10, 10, 0, 0, 10, 10);
	
	if ( $_FILES['userfile']['size'] > 131072 ) {
		echo "Die Datei ist zu groß.";
	}	
	elseif (move_uploaded_file($name, $uploaddir . $dateiname)) {
		echo "Datei wurde erfolgreich hochgeladen.<br /> <a href=\"javascript:history.back();\">Zurück</a>";
		$db->query(" INSERT INTO `pictures` (`URL`) VALUES ('$dateiname') ");
	} 
	else {
	echo "Fehler beim Hochladen.";
	}
}
?>

Also der lädt die Datei in das richtige Verzeichnis hoch, schreibt das auch in die DB rein, doch dann überträgt er das Wasserzeichen nicht drauf (die URL zum Wasserzeichen ist 100 pro richtig) ... Wäre euch echt danbar,

MfG, walle
 
elseif (move_uploaded_file($name, $uploaddir . $dateiname)) {

Das gibt ja den Befehl und die Adresse, wo die Datei himkommt ... Und da liegt ja nicht das Problem. Wie ich schon geschrieben hatte, leitet er ja die Datei einwandfrei zu dem richtigen Ordner - der Eintrag in MySQL ist auch fehlerfrei.
 
Nein, damit kopierst du die hochgeladene Datei - unverändert. Du willst aber, wenn ich dich richtig verstanden habe, dass das Wasserzeichen dadrauf gesetzt wird. Dann müsstest du das auch irgendwo entsprechend speichern.
 
Achso meinst du das ... Ist es denn nicht möglich gleichzeitig ein Wasserzeichen darauf zu tun und dann hochladen?

-> Bild hochladen (im Speicher)
-> Wasserzeichen
-> Bild komplett auf das Webspace hochladen

Was mache ich denn deiner Meinung nach falsch?
 
Das Bild befindet sich nicht im Speichern sondern bereits auf der Festplatte des Servers (im Ordner /tmp um genau zu sein). Diese Datei kannst du allerdings öffnen, bearbeiten und anstelle des hochgeladenen Bildes an die Stelle speichern, wo du es gerne hättest.
 
Hmm, sei mir ned böse, aber das will iwie ned:

PHP:
if (!$_POST['hochladen']) {
?>
<table border="0" width="100%" align="center">
	<tr>
	<td>
		<h5>Hallo <?=$user['uLogin']?>! <a href="logout.php">[Logout]</a></h5>
	</td>
	<tr>
	<td>
	<h3>Bilder-Upload</h3><hr />
	<center>
		<form enctype="multipart/form-data" action="index.php" method="post">
		Datei hochladen: <input name="userfile" type="file"><br />
		<h5>Datei darf max. 128 Kb groß sein. Unterstützte Formate: jpg</h5>
		<input name="hochladen" type="submit" value="Hochladen">
		</form>
	</center>
	</tr>
	<tr>
		<td><h3>Bisher hochgeladene Bilder</h3><hr /></td>
	</tr>
	<tr>
		<td>
			<?php
			
			$result = $db->query( "SELECT * FROM pictures" );
			while ( $pictures = $db->fetch( $result ) ) {
			
			echo "<img src='pictures/";
			echo $pictures['URL'];
			echo "' width='200'>";
			
			}
			?>
		</td>
	</tr>
	</td>
	</tr>
</table>
<?php
}	elseif ( $_POST['hochladen'] ) {

	$uploaddir = 'pictures/';
	$tmpdir = 'tmp/';
	$format = $_FILES['userfile']['type'];
	$dateiname = $_FILES['userfile']['name'];
	$name = $_FILES['userfile']['tmp_name'];
	
	move_uploaded_file($dateiname, $tmpdir . $dateiname);
	
	$imgsrc = imagecreatefromjpeg("$tmpdir$dateiname");
	$imgzeichen = imagecreatefrompng("pictures/wasserzeichen.png");
	
	$width = imagesx($imgsrc);
	$height = imagesy($imgsrc);
	
	$img = imagecreatetruecolor($width, $height);
	
	imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
	
	imagecopy($img, $imgzeichen, 10, 10, 0, 0, 10, 10);
	
	if (move_uploaded_file($name, $uploaddir . $dateiname)) {
		echo "Datei wurde erfolgreich hochgeladen.<br /> <a href=\"javascript:history.back();\">Zurück</a>";
		$db->query(" INSERT INTO `pictures` (`URL`) VALUES ('$dateiname') ");
	} 
	else {
	echo "Fehler beim Hochladen.";
	}
}

Ich lade die Datei jetzt iwie 2 Mal hoch, aber auch so will er das nicht ....
 
Zurück