[PHP 4] Imageupload mit Thumbnail und Watermark-> Fehler bei GD Funktionen

sniper.de

Grand Admiral Special
Mitglied seit
11.11.2001
Beiträge
3.122
Renomée
1
Standort
STRG + ALT +ENTF
hiho liebe P3D Community.

Heute wende ich mich an euch, mit einem mir schier unglaublichen Problem, an dem ich bereits mehrere Stunden debugged habe.
Nun habe ich es langsam dicke und möchte euch um eure konstruktive Mithilfe bitten.

Es geht um ein Imageupload.

Man lädt ein Bild hoch und es wird automatisch ein Watermark draufgestempelt und ein Thumbnail davon erstellt,m beides dann gespeichert.

Habe dann von einem Kumpel noch ne FTP Funktion bekommen, diese aber erstmal nicht eingebaut.

Es wird die GD Library 2.0.1 vorrausgesetzt, diese ist auch installiert und voll funktionsfähig.

Codeabschnitt ist folgender:
PHP:
// Bild hochladen, wenn erfolgreich, melden
				if( doupload_image( $_FILES['uploadfile']['name'], $_FILES['uploadfile']['tmp_name'], $_POST['thumbnail'], $id, $_POST['watermark'], $uploaddir,'' )) 
				{
					
					$replace=array('error' => '<script language="javascript">window.location.href = "http://web10.isis88.plusserver.de/admin/bilderupload.php"</script>
		 									Das Bild wurde erfolgreich hochgeladen und in die Datenbank eingetragem.<br>Sie werden weitergeleitet.<br>Sollte dies nicht geschehen,klicken sie <a href="'.$url.'/admin/bilderupload.php" class="hebel">hier</a>');
					$tpl->assign($replace);
					$tpl->display('error.html');
					
					// Footer
    				include ($pfad.'/_footer.php');
					exit();
				}
				else // Bild nicht erfolgreich hochgeladen, also Datenbankeintrag löschen
				{
					$sql = "DELETE FROM bilder WHERE ID='".$id."'";
					$db->query($sql);
				
					// Fehler ausgeben
					$replace=array('error' => 'Fehler beim Hochladen der Datei!<br><a href="javascript:history.back()" class="hebel">zur&uuml;ck</a>');
					$tpl->assign($replace);
					$tpl->display('error.html');
					
					// Footer
    				include ($pfad.'/_footer.php');
					exit();
				
				}

Das ist der AUfruf in der normalen Datei.

Die benutzten Funktionen sind folgende:

doupload_image:
PHP:
// Bild hochladen (mit watermark / thumbnail)
function doupload_image ($filename1, $tempname, $thumbnail, $id, $watermark, $uploaddir, $prefix)
{

	
	if ( $thumbnail == 1 && createthumbnail ( $filename, $tempname, $id, $uploaddir, $prefix ) == 0 ) return 0;

	if ( preg_match("/jpg|jpeg/", getendung( $filename ))) $orgimage = imagecreatefromjpeg( $tempname );
	elseif ( preg_match("/png/", getendung( $filename ))) $orgimage = imagecreatefrompng( $tempname );
	elseif (preg_match ( "/gif/", getendung ( $filename ) ) ) $orgimage = imagecreatefromgif ( $tempname );

	if ( $watermark == 1 ) {
		$watermark = imagecreatefrompng("/home/www/web10/html/images/watermark.png");//watermark=imagecreatefromjpg("/home/www/web10/html/images/watermark.jpg");
		imagealphablending( $orgimage, true); //imagecolortransparent($watermark,imagecolorat($watermark,1,1));
		imagecopy( $orgimage, $watermark, imagesx( $orgimage) - imagesx( $watermark)-2, imagesy( $orgimage) - imagesy( $watermark) - 2, 0 ,0, imagesx( $watermark), imagesy( $watermark));
		imagedestroy( $watermark );
	}

	if ( preg_match (" /jpg|jpeg/", getendung( $filename))) return @imagejpeg( $orgimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
	elseif ( preg_match( "/png/", getendung( $filename))) return @imagepng( $orgimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
	elseif ( preg_match("/gif/", getendung($filename))) return @imagegif($orgimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
}

createthumbnail:
PHP:
// Thumbnail erstellen ## GD > 2.0.1 vorausgesetzt!
function createthumbnail ($filename, $tempname, $id, $uploaddir, $prefix)
{
	global $conf;
	if ( preg_match( "/jpg|jpeg/", getendung( $filename ) ) ) $orgimage = imagecreatefromjpeg( $tempname );
		elseif (preg_match( "/png/", getendung( $filename ) ) ) $orgimage = imagecreatefrompng( $tempname );
		elseif (preg_match( "/gif/", getendung( $filename ) ) ) $orgimage = imagecreatefromgif( $tempname );

		$thumbheight = imagesy( $orgimage ) * ( $conf['thumbnailwidth'] / imagesx( $orgimage ));
		
		if ( preg_match( "/gif/", getendung ( $filename ) ) )
		{
			// GIF BILD; daher nur IMAGECREATE !
			$newimage = imagecreate( $conf['thumbnailwidth'], $thumbheight );
		}
		else
		{
			// PNG ODER JPEG, daher TRUECOLOR	
			$newimage = imagecreatetruecolor( $conf['thumbnailwidth'], $thumbheight );
		}
		
		imagecopyresized( $newimage, $orgimage, 0, 0, 0, 0, $conf['thumbnailwidth'], $thumbhight, imagesx( $orgimage ), imagesy( $orgimage ));

		if ( preg_match("/jpg|jpeg/", getendung($filename))) return @imagejpeg($newimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
		elseif ( preg_match("/png/", getendung($filename))) return @imagepng($newimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
		elseif ( preg_match("/gif/", getendung($filename))) return @imagegif($newimage, $uploaddir."/". $id."_thumbnail-".$prefix."_". getfilename($filename).".". getendung ( $filename ) );
}

getendung:
PHP:
// Dateiendung erhalten
function getendung($filename)
{
	// Endung aus Dateinamen holen
	$filename = strtolower( $filename );
	$filetype_arr = explode( ".", $filename );
	$end = $filetype_arr[ (count( $filetype_arr ) - 1) ];
	
	return $end;
}

getfilename:
PHP:
// Dateinamen erhalten
function getfilename($filename) 
{
		
		$filename = explode ( "." , $filename ) ;
		if ( count ( $filename ) > 1 ) 
		{
			$filename[ count ( $filename ) - 1 ] = "" ;
			$filename = implode ( "." , $filename ) ;
			return substr ( $filename , 0 , strlen ( $filename ) - 1 ) ;
		}
}


Es kommt immer folgende Fehlermeldung:
Code:
Warning: imagesy(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 224

Warning: imagesx(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 224

Warning: Division by zero in /home/www/web10/html/classes/dateiupload.php on line 224

Warning: imagecreatetruecolor(): Invalid image dimensions in /home/www/web10/html/classes/dateiupload.php on line 234

Warning: imagesx(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 237

Warning: imagesy(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 237

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 237

Diese bezieht sich auf das Create Thumbnail Funktion.

Wenn ich diese nun ausschliesse, komtm bei der doupload mit dem Watermark ähnliches:

Code:
Warning: imagealphablending(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 257

Warning: imagesx(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 258

Warning: imagesy(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 258

Warning: imagecopy(): supplied argument is not a valid Image resource in /home/www/web10/html/classes/dateiupload.php on line 258
-> Bei Watermark erstellung.

Das bild wird dann natürlich auch nicht gespeichert.

Ich weiss, da ist sicherlich viel falsch, aber ich arbeite zum ersten mal mit Image Funktionen.
Daher bitte ich um Verständnis.

Danke

Sniper.de
 
Zuletzt bearbeitet:
jop.

Der darf dir auch bekannt vorkommen :)
Dein Schnippsel hat mich dazu inspiriert ein wenig weiter zu gegen ;)

Habe mir deine "neue" Version mal angeschaun, und werde sie mal einbauen.
Sieht schonmal sehr gut aus, danke dir!
 
Zurück
Oben Unten