sniper.de
22.08.2004, 13:40
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:
// 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ü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:
// 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:
// 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:
// 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:
// 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:
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:
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
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:
// 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ü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:
// 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:
// 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:
// 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:
// 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:
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:
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