我正在尝试重新设计我的网站,以便我原始的正方形,基于图块的图像渲染可以更像是图像的剪切......以摆脱网格图案。
以下是它最初的样子......
这是我想要的粗略模型:
所以我重新保存了一个透明背景的图片缩略图...我只想让狗展示,而正方形是透明的,这将显示网站的背景。
然而,当我在页面上呈现它时,它具有这种黑色背景。
我已经检查了我的CSS,看看是否有某种img类,或渲染漫画的类...甚至引导程序,看看哪里可能有背景颜色分配给黑色(还有搜索十六进制代码000000),但没找到一个...
然后我发现它与我的缩略图脚本重新采样png的方式有关...因为我得到了所谓的透明图像的黑色背景,所以我责怪imagecreatetruecolor()
{{1} }。
我在这里尝试关注Cheekysoft's question关于在重新采样后保留透明度......但它不起作用......他的两个要点是:
returns an image identifier representing a black image of the specified size.
我发现如果在调整大小/重新取样之前放置imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );
,它会透明地显示......这就是我想要的......但是在重新取样之后却没有。
Thumbnailer.php代码:
$img = imagecreatefrompng($image_file);
有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
在重新取样/调整图像大小之前,您需要在目标图像上调用imagealphablending():
//copy and resize old image to new image
imagealphablending($tmp_img, false);
imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// ...
答案 1 :(得分:1)
创建图像后,您将alphablending和traparent代码放在下面。只需将它们放在createresample行和透明图像前面,图像由imagecreatefrompng创建。
imagealphablending( $tmp_img, false );
imagesavealpha( $tmp_img, true );
imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
或者您可以尝试以下
$img = ImageCreateFromPNG($image_file);
$tmp_img = imagecreatetruecolor($new_width,$new_height);
imagecolortransparent($tmp_img, imagecolorallocate($tmp_img, 0, 0, 0));
imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);