PNG Изменение размера изображения не работает должным образом

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

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;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]