2015-03-26 2 views
2

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

http://s13.postimg.org/3jswfzmx3/xnationals_png_pagespeed_ic_k_Mnf2qx2k.png

И когда я использую изменение размеров функции я остался с этим:

http://s10.postimg.org/4el00d5o9/389056751644.png

Вот код, который я получил:

$img = imagecreatefrompng($target); 
$tci = imagecreatetruecolor($width, $height); 
etruecolor(200, 200); 
imagecopyresampled($tci, $img, 0, 0, 0, 0, 200, 200, $w_orig, $h_orig); 
imagealphablending($tci, true); 
imagesavealpha($tci, true); 
imagefill($tci,0,0,0x7fff0000); 
imagepng($tci, $newcopy, 9); 
imagedestroy($tci); 

ответ

2

Если вы работаете с изменением размера png и прозрачным изображением, это немного отличается. Вы также не imagecolorallocatealpha

Ниже основной обходной путь к этому вопросу, держать его в функцию, так что это многоразовые или попробовать его, прежде чем сделать это:

function resizeImg($im, $dst_width, $dst_height) { 
    $width = imagesx($im); 
    $height = imagesy($im); 

    $newImg = imagecreatetruecolor($dst_width, $dst_height); 

    imagealphablending($newImg, false); 
    imagesavealpha($newImg, true); 
    $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); 
    imagefilledrectangle($newImg, 0, 0, $width, $height, $transparent); 
    imagecopyresampled($newImg, $im, 0, 0, 0, 0, $dst_width, $dst_height, $width, $height); 

    return $newImg; 
} 
+0

После много работы я нашел что основная проблема была imagepng ($ tci, $ newcopy, 9); Он сделал весь черный фон вместо прозрачного – Donny123

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