Ik ben een scriptje aan het maken wat afbeeldingen upload in een map en automatisch een thumbnail aanmaakt. Als ik een png upload dan wordt de transparantie zwart. Onderstaand het script wat ik gebruik, weer iemand hoe ik dit kan fixen? Ik ben zelf overigens een enorme PHP beginner, dus misschien is het wel een domme vraag :P.

---------------------------------------------------------------------------------------
<?php
error_reporting(0);

$change="";
$abc="";

$afb_size=1000; //de breedte van de grote afbeeldingen
$thumb_size=100; //de grootste waarde van de thumb, hang er van af of de afbeelding breder of hoger is


define ("MAX_SIZE","1000");
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

$errors=0;

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$image =$_FILES["file"]["name"];
$uploadedfile = $_FILES['file']['tmp_name'];


if ($image)
{

$filename = stripslashes($_FILES['file']['name']);

$extension = getExtension($filename);
$extension = strtolower($extension);


if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{

$change='<div class="msgdiv">Unknown Image extension </div> ';
$errors=1;
}
else
{

$size=filesize($_FILES['file']['tmp_name']);


if ($size > MAX_SIZE*1024)
{
$change='<div class="msgdiv">You have exceeded the size limit!</div> ';
$errors=1;
}


if($extension=="jpg" || $extension=="jpeg" )
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);

}
else if($extension=="png")
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);

}
else
{
$src = imagecreatefromgif($uploadedfile);
}

echo $scr;

list($width,$height)=getimagesize($uploadedfile);

if ($width > $afb_size){
$afb_size=1000;}else{
$afb_size=$width; }



if ($width > $height){

if ($afb_size > $width){$newwidth= $width;}else{$newwidth= $afb_size;}
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);


$newwidth1=$thumb_size;
$newheight1=($height/$width)*$newwidth1;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);

}else{

if ($afb_size > $height){$newheight= $height;}else{$newheight= $afb_size;}
$newwidth=($width/$height)*$newheight;
$tmp=imagecreatetruecolor($newwidth,$newheight);


$newheight1=$thumb_size;
$newwidth1=($width/$height)*$newheight1;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);

}



imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);

imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);

$date = date('Ymd_His_');

$filename = "images/".$date. $_FILES['file']['name'];

$filename1 = "images/".$date. $_FILES['file']['name'];

//voegt '_thumb' toe aan de bestandsnaam van de thumbnail
$filename1 = str_replace(".","_thumb.",$filename1);



imagejpeg($tmp,$filename,100);

imagejpeg($tmp1,$filename1,100);

imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
}}

}

//If no errors registred, print the success message
if(isset($_POST['Submit']) && !$errors)
{

// mysql_query("update {$prefix}users set img='$big',img_small='$small' where user_id='$user'");
$change=' <div class="msgdiv">Image Uploaded Successfully!</div>';
}

?>
Hoi Vincent,

Ik heb ook een aantal dingen gevonden op google, het probleem is: ik weet niet hoe ik het moet toepassen. Heb het op verschillende plaatsen in mijn script proberen te zetten maar heb het probleem nog steeds niet kunnen oplossen. Zoals ik al vertelde, ben niet zo goed :P

Reageren