2012-03-26 4 views
4

Я использую этот код для изменения размера:PHP Изменение размера изображения дает черный фон

<?php 
// Function for resizing any jpg, gif, or png image files 
function ak_img_resize($target, $newcopy, $w, $h, $ext) { 
    list($w_orig, $h_orig) = getimagesize($target); 
    $scale_ratio = $w_orig/$h_orig; 
    if (($w/$h) > $scale_ratio) { 
      $w = $h * $scale_ratio; 
    } else { 
      $h = $w/$scale_ratio; 
    } 
    $img = ""; 
    $ext = strtolower($ext); 
    if ($ext == "gif"){ 
     $img = imagecreatefromgif($target); 
    } else if($ext =="png"){ 
     $img = imagecreatefrompng($target); 
    } else { 
     $img = imagecreatefromjpeg($target); 
    } 
    $tci = imagecreatetruecolor($w, $h); 
    // imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h) 
    imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig); 
    imagejpeg($tci, $newcopy, 80); 
} 
?> 

Но каждый раз, когда я загрузить Transparant PNG изображение, то получается с черным фоном. Как я могу предотвратить это и поддерживать фон прозрачности?

+0

Вы пытаетесь это сделать с jpg-изображением или же мудрый png? – chhameed

+0

Этот вопрос может помочь http://stackoverflow.com/questions/32243/can-png-image-transparency-be-preserved-when-using-phps-gdlib-imagecopyresample – Ben

+0

Jpeg не может иметь прозрачный фон. http://stackoverflow.com/questions/313070/png-transparency-with-php –

ответ

4

попробовать это, прежде чем imagecopyresampled, добавленного альфа-смешивание, а затем сохранить алп

imagealphablending($tci, false); 
imagesavealpha($tci,true); 
$transparent = imagecolorallocatealpha($tci, 255, 255, 255, 127); 
imagefilledrectangle($tci, 0, 0, $w, $h, $transparent); 
0

Попробуйте, для изготовления повторного размера функция

<?php 
    $file_name =testimg.jpg // your file name 
    extension= explode(".", strtolower($file_name));//get ext of your image 

    if($extension[1]=="jpg" || $extension[1]=="jpeg") 
    { 
     $src = imagecreatefromjpeg($filename); // Check ext and set src 
    } 
    else if($extension[2]=="png") 
    { 
     $src = imagecreatefrompng($filename); // Check ext and set src 
    } 
    else 
    { 
     $src = imagecreatefromgif($filename); // Check ext and set src 
    } 
    list($width,$height)=getimagesize($filename); 
    $newwidth=round($width/10); //resized image width 
    $newheight=round($height/10); //resized image height 
    $tmp=imagecreatetruecolor($newwidth,$newheight); 
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 
    $resizedfile = "resizeduploads/". $name; 
    if($extension[1]=="jpg" || $extension[1]=="jpeg") 
    { 
     imagejpeg($tmp,$resizedfile); 
    } 
    else if($extension[1]=="png") 
    { 
     imagepng($tmp,$resizedfile); 
    } 
    else 
    { 
     imagegif($tmp,$resizedfile); 
    } 
    imagedestroy($src); 
    imagedestroy($tmp); 
Смежные вопросы