如何使用 PHP 设置透明度或着色背景图像?
Posted
技术标签:
【中文标题】如何使用 PHP 设置透明度或着色背景图像?【英文标题】:How to set a transparency or colorize background image with PHP? 【发布时间】:2021-07-16 18:29:02 【问题描述】:我会说一点英语。
这很好,很有效:
<?php
header( 'Content-Type: image/png' );
$imgname = '../assets/images/lock-224x224.png'; // https://i.imgur.com/mYT7xoo.png
$im = imagecreatefrompng( $imgname );
imagealphablending( $im, true );
imagesavealpha( $im, true );
imagefilter ( $im, IMG_FILTER_COLORIZE, rand( 0, 255 ), rand( 0, 255 ), rand( 0, 255 ) );
$im = imagerotate( $im, rand( 0, 360 ), 0 );
$im = imagescale( $im, -1, 224 );
imagepng( $im );
imagedestroy( $im );
?>
来源(透明)[lock-224x224.png] 图片:
我想要透明或彩色背景,而不是黑色。
现在:黑色。请查看创建的图像:
【问题讨论】:
透明或彩色是什么意思?你的png真的透明吗?首先检查您的 png 背景是否透明,然后您就可以在任何地方使用您的图像,并且图像的背景将呈现任何颜色。如果您的 PNG 不透明,第一步是在图像编辑器中删除背景。将透明图片放在黑色背景上会导致图片背景为黑色等等。 编辑文件 lock-224x224.png 并给它一个透明的背景。用相同的名称保存它。这实际上不是一个编程问题。 亲爱的 Grogu & hakre,源图是透明背景:i.imgur.com/mYT7xoo.png 我想将创建的黑色背景更改为透明,或者如果不可能:背景颜色是,仅示例:#FF0000; 这能回答你的问题吗? PHP/GD - transparent background 【参考方案1】:已解决:
$im = imagecreatefrompng( $imgname );
$im = imagerotate( $im, rand( 0, 360 ), imagecolorallocatealpha( $im, 0, 0, 0, 127 ) );
imagealphablending( $im, false );
$im = imagescale( $im, -1, 224 );
imagefilter ( $im, IMG_FILTER_COLORIZE, rand( 0, 255 ), rand( 0, 255 ), rand( 0, 255 ) );
imagesavealpha( $im, true );
imagepng( $im );
【讨论】:
以上是关于如何使用 PHP 设置透明度或着色背景图像?的主要内容,如果未能解决你的问题,请参考以下文章