Transparenz bei png Bild upload nach resize erhalten

largo666

Mitglied
hi

Ich möchte gerne die Transparenz der *.png und *.gif Dateien erhalten nach dem ich sie per script verkleinert habe und mit "imagecreate" in der neuen größe speichere.

Ich weiß wie es theoretisch funktioniert:

PHP:
imagealphablending($im, false);
$colorTransparent = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $colorTransparent);
imagesavealpha($im, true);

dennoch bekomm ich es nicht in dieses Script eingebaut.

Das Script bekommt ein Bildupload geliefert, prüft die Dateiendung, reduziert die Breite proportional auf 690px, wandelt das gelieferte Format in *.jpg um, ändert den Dateinamen nach einer bestimmten vorgabe und speichert alles in der Datenbank.

PHP:
$allowedfiles = array('jpg', 'jpeg', 'JPG', 'JPEG', 'png', 'PNG', 'gif', 'GIF');
$size = filesize($_FILES['datei']['tmp_name'])/1000000;
$mbsize = round($size, 3);
$base_dir = "http://www.xxx.de/xxx/xxx/";
$upload_dir = "xxx/xxx/";

if(!isset($_FILES['datei'])) {echo'error';}else {

$filetype = split("\.", $_FILES['datei']['name']);
$filetype = $filetype[count($filetype)-1];
$file_size = $_FILES['datei']['size'];

if(!in_array($filetype, $allowedfiles)){echo'error';}else{
					
$safe_extension ="_extens.";					
$safe_filename = $xxx.$safe_extension.$filetype;   

// Bildbreite reduzieren
$size_orig = 690;
$tmpname  = $_FILES['datei']['tmp_name'];

function img_resize( $tmpname, $size_orig, $upload_dir, $safe_filename ){
	
$upload_dir .= ( substr($upload_dir,-1) != "/") ? "/" : "";
$gis = GetImageSize($tmpname);
$type = $gis[2];

switch($type){
case "1": $imorig = imagecreatefromgif($tmpname); break;
case "2": $imorig = imagecreatefromjpeg($tmpname);break;
case "3": $imorig = imagecreatefrompng($tmpname); break;
default:  $imorig = imagecreatefromjpeg($tmpname);}
		
$x = imageSX($imorig);
$y = imageSY($imorig);
		
if($gis[0] <= $size_orig){
$av = $x;
$ah = $y; }else{
$yc = $y*1.0001; 
$d = $x>$yc?$x:$yc; 
$c = $d>$size_orig ? $size_orig/$d : $size_orig; 
$av = $x*$c;       
$ah = $y*$c;
}   
$im = imagecreate($av, $ah);
$im = imagecreatetruecolor($av,$ah);
if (imagecopyresampled($im,$imorig , 0,0,0,0,$av,$ah,$x,$y))
if (imagejpeg($im, $upload_dir.$safe_filename))
return true;
else
return false;}

@img_resize( $tmpname , 690 , $upload_dir , $safe_filename);
					 
$complete_path = $base_dir.$upload_dir.$safe_filename;

// Bildformate in png umwandeln
$typ=getimagesize($complete_path);
$typ=$typ[2];

switch ($typ) {
case "1" :$im = imagecreatefromgif($complete_path);break;
case "2" :$im = imagecreatefromjpeg($complete_path);break;
case "3" :$im = imagecreatefrompng($complete_path);break;}

//Bild als *.png abspeichern
$pic_dir = "cms/band/bandpic/";
$new_path = imagejpeg($im,$pic_dir.$xxx.$safe_extension."jpg");
$sizewxh = getimagesize($complete_path);
$sizewidth = $sizewxh[0];
$sizeheight = $sizewxh[1];
$new_jpg_path = $base_dir.$pic_dir.$xxx.$safe_extension."jpg"; 

$sql = " INSERT... ";                                 
            }
        }
 
Zurück