2016-08-22 4 views
0

Можете ли вы меня поддержать? У меня есть следующий скрипт, чтобы создать эскиз, отлично работает! НО, когда я загружаю PNG-файл с прозрачным фоном, по какой-то причине фон меняется на черный.PNG с прозрачным фоном = thumbnail с черным backgroud

<?php 
// Function for resizing 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); 
} 
?> 

Если фон из PNG это прозрачное, мне нужна миниатюра прозрачной и, пожалуйста, вы можете поддержать меня? Любая помощь будет БОЛЬШОЙ!

Заранее спасибо

+1

Я не совсем уверен, как ваш код должен работать, но похоже, что ваши миниатюры - это все JPEG-файлы? JPEG не поддерживает прозрачность вообще, поэтому области, которые прозрачны в исходном изображении, должны быть заполнены цветом. – Chris

ответ

0

Использование:

$tci = imagecreate($w, $h); 

Вместо:

$tci = imagecreatetruecolor($w, $h); 

Моя проблема теперь решена :)

+0

Если это решит вашу проблему, отметьте ее как принятый ответ. – Striezel

0

Попробуйте заменить это:

imagejpeg($tci, $newcopy, 80); 

этим:

imagegif($tci, $newcopy, 80); 

Или эквивалентная функция в зависимости от формата изображения:

Imagepng

Imagegif

Imagejpeg

Imagebmp

+0

Я пробовал, но никаких изменений :(Я попытаюсь найти другой скрипт ... Спасибо за вашу помощь –

Смежные вопросы