如何使用 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 设置透明度或着色背景图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上使图像透明?

如何使用 PHP 使动画 gif 的背景透明?

如何使图像变暗以保持透明度不受 CSS 或 JS 影响?

如何使 UITabbar 透明以便超级视图的背景图像可见?

如何使背景PNG图像Alpha通道在QMainWindow中显示为透明

如何在 PHP 中使用 GD 设置透明背景?