PNG图像大小调整无法正常工作

时间:2015-03-26 15:10:14

标签: php image-resizing

我正在使用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);

1 个答案:

答案 0 :(得分: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;
}