gpt4 book ai didi

php - 如何使用 PHP 为图像添加阴影?

转载 作者:IT王子 更新时间:2023-10-29 00:07:39 25 4
gpt4 key购买 nike

我正在寻找一种使用 PHP 为图像添加阴影的方法。在您回答或投票结束之前:我希望使用 CSS 或 HTML 来完成此操作。我想生成一个图像文件。这不是 this question 的副本也不this one .

我正在寻找一种非常具体的效果。例如,给定此输入图像:

It's an image!

我想生成如下图片:

It's an image, with a drop shadow!


TL;DR:上面这张图片是使用 Photoshop 的投影效果生成的。我想要一个非常相似的外观。作为引用,这里是我们的设计团队使用的设置。理想情况下,我会在我的代码中对角度、距离、不透明度等进行类似的控制:

It's some Photoshop settings!

我可以完全访问我们基于 debian-linus 的服务器,因此任何 GD 或 ImageMagick 解决方案都可以使用。与任何 FOSS Linux 软件解决方案一样,尽管我更喜欢使用 IM 或 GD 来完成它,因为它们已经安装并且不需要安装新软件。

阴影必须能够放置在透明的非矩形 PNG 上!

我问这个问题主要是因为我在网上找到的脚本和解决方案要么只产生矩形阴影,看起来像一坨屎,要么就是根本不起作用。

最佳答案

只是为了它(我知道它已被回答和接受):几个月前,为了回答关于图形设计堆栈交换的问题,关于从丢失源文件的 PNG 中恢复掩码,我拼凑了一些东西它使用 PHP GD 函数从透明 PNG 中提取 alpha channel 。正如乔在上面提到的评论中所说,您可以使用 alpha channel 作为投影,只需将其偏移 x 和 y 像素,然后对其应用图像卷积模糊滤镜,然后将原始图像复制合并到顶部。以下代码可能很慢并且是概念验证,但它是一个开始,并且按照您最初的要求使用 PHP。

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$w = imagesx($im);
$h = imagesy($im);

$om = imagecreatetruecolor($w,$h);

for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);

$orgb = imagecolorallocate($om,$colors['alpha'],$colors['alpha'],$colors['alpha']);
imagesetpixel($om,$x,$y,$orgb);
}
}

header('Content-Type: image/png');
imagepng($om);

imagedestroy($om);
imagedestroy($im);

?>

关于php - 如何使用 PHP 为图像添加阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7288173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com