Problem med gd resize
Jeg forsøger at uploade og resize et billede med nedenstående script.Upload delen virker, men jeg får følgende fejlmeddelelse i f.m. resize delen:
////////////////// FEJLMEDDELELSE START //////////////////
Warning: imagesx(): supplied argument is not a valid Image resource in /customers/silkeborgbasketball.dk/silkeborgbasketball.dk/httpd.www/test/test2.php on line 48
Warning: imagesy(): supplied argument is not a valid Image resource in /customers/silkeborgbasketball.dk/silkeborgbasketball.dk/httpd.www/test/test2.php on line 49
Warning: imagecopyresized(): supplied argument is not a valid Image resource in /customers/silkeborgbasketball.dk/silkeborgbasketball.dk/httpd.www/test/test2.php on line 64
Warning: imagedestroy(): supplied argument is not a valid Image resource in /customers/silkeborgbasketball.dk/silkeborgbasketball.dk/httpd.www/test/test2.php on line 75
////////////////// FEJLMEDDELELSE SLUT //////////////////
////////////////// SCRIPT START //////////////////
<?php
$updir = $_SERVER["DOCUMENT_ROOT"]."/test/upload"; // Definer stien til dit oploadbibliotek
$aft = array('image/jpeg','image/pjpeg','image/png'); // De filtyper der kan uploades
/*
Function checkgd()
checks the version of gd, and returns "yes" when it's higher than 2
*/
function checkgd(){
$gd2="";
ob_start();
phpinfo(8);
$phpinfo=ob_get_contents();
ob_end_clean();
$phpinfo=strip_tags($phpinfo);
$phpinfo=stristr($phpinfo,"gd version");
$phpinfo=stristr($phpinfo,"version");
preg_match('/\d/',$phpinfo,$gd);
if ($gd[0]=='2'){$gd2="yes";}
return $gd2;
}
/*
Function ditchtn($arr,$thumbname)
filters out thumbnails
*/
function ditchtn($arr,$thumbname){
foreach ($arr as $item){
if (!preg_match("/^".$thumbname."/",$item)){$tmparr[]=$item;}
}
return $tmparr;
}
/*
Function createthumb($name,$filename,$new_w,$new_h)
creates a resized image
variables:
$name Original filename
$filename Filename of the resized image
$new_w width of resized image
$new_h height of resized image
*/
function createthumb($name,$filename,$new_w,$new_h){
global $gd2;
$system=explode(".",$name);
if (preg_match("/jpg|jpeg/",$system[1])){$src_img=imagecreatefromjpeg($name);}
if (preg_match("/png/",$system[1])){$src_img=imagecreatefrompng($name);}
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
if ($old_x > $old_y) {
$thumb_w=$new_w;
$thumb_h=$old_y*($new_h/$old_x);
}
if ($old_x < $old_y) {
$thumb_w=$old_x*($new_w/$old_y);
$thumb_h=$new_h;
}
if ($old_x == $old_y) {
$thumb_w=$new_w;
$thumb_h=$new_h;
}
if ($gd2==""){
$dst_img=ImageCreate($thumb_w,$thumb_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
}else{
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
}
if (preg_match("/png/",$system[1])){
imagepng($dst_img,$filename);
} else {
imagejpeg($dst_img,$filename);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
/*
Function directory($directory,$filters)
reads the content of $directory, takes the files that apply to $filter
and returns an array of the filenames.
You can specify which files to read, for example
$files = directory(".","jpg,gif");
gets all jpg and gif files in this directory.
$files = directory(".","all");
gets all files.
*/
function directory($dir,$filters){
$handle=opendir($dir);
$files=array();
if ($filters == "all"){while(($file = readdir($handle))!==false){$files[] = $file;}}
if ($filters != "all"){
$filters=explode(",",$filters);
while (($file = readdir($handle))!==false) {
for ($f=0;$f<sizeof($filters);$f++):
$system=explode(".",$file);
if ($system[1] == $filters[$f]){$files[] = $file;}
endfor;
}
}
closedir($handle);
return $files;
}
?>
<html>
<head>
<title>Untitled Document</title>
<link href="scroll.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#D0D0D0" text="#000000">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">upload</font>
<br><br>
<?php
if (isset($_GET['mode']) && $_GET['mode'] == "upload") {
if (empty($_REQUEST['fil'])) {
echo "Du skal vælge en fil";
}
else {
if (in_array($_FILES['fil']['type'],$aft)) {
if (move_uploaded_file($_FILES['fil'][tmp_name], $updir."/".$_FILES['fil']['name']) or die("Filen kan ikke
uploades prøv igen!")) {
$gd2=checkgd();
createthumb($updir."/".$_FILES['fil']['name'],$updir."/"."tn_".$_FILES['fil']['name'],100,100);
Echo "Alt OK<br />";
Echo $gd2;
Echo "<br />";
Echo $_REQUEST['tekst'];
}
else {}
}
else {
echo "Filtypen er ikke korrekt!";
}
}
}
elseif (empty($_GET['mode'])) {
?>
<form action="test2.php?mode=upload" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="file" name="fil"><br />
<input type="text" name="tekst">
<br /><br />
<input type="submit" name="submit" value="Upload" >
</form>
<?php
}
else {
echo "Bad guy!";
}
?>
</body>
</html>
////////////////// SCRIPT SLUT //////////////////
Der bliver gemt en fil med det rigtige thumb navn og størrelsen 100*100 pixels, men billedet er helt sort. Og der er ikke taget højde for de oprindelige dimensioner.
Er der nogen der kan hjælpe med at finde fejlen?
