小编Nik*_* R.的帖子

Php - 替换透明png图像的基色

我搜索了很多,我发现只有几个解决方案(谷歌和stackoverflow所以请不要将此标记为重复,除非有真正重复的问题),但问题是困难的边缘.有没有适当的方法来改变基色,让我们说黑色的形状png图像与透明背景,但保持柔软的边缘?

这是一个示例图像:

在此输入图像描述

我希望它看起来像这样:

在此输入图像描述

但我找到的解决方案给了我这个:

在此输入图像描述

由于我将在我的本地主机上使用它,仅供个人使用,任何有助于实现此目的的PHP库都表示赞赏.

更新:

这是给我第三张图片的功能:

function LoadPNG($imgname)
{
    $im = imagecreatefrompng ($imgname);
    imagetruecolortopalette($im,false, 255);
    $index = imagecolorclosest ( $im,  0,0,0 ); // GET BLACK COLOR
    imagecolorset($im,$index,0,150,255); // SET COLOR TO BLUE
    $name = basename($imgname);
    imagepng($im, getcwd()."/tmp/$name" ); // save image as png
    imagedestroy($im);
}
$dir = getcwd()."/img/";
$images = glob($dir."/*.png",GLOB_BRACE);
foreach($images as $image) {
    LoadPNG($image);
}
Run Code Online (Sandbox Code Playgroud)

最初,这个功能是GIF图像的解决方案(255种颜色的调色板)所以我想这就是为什么有硬边缘.我正在寻找一个解决方案(改进这个脚本)来保持PNG图像的透明度和柔和边缘.

编辑2:

我在这里找到了一个使用html5 canvas和javascript的有趣方法:http: //users7.jabry.com/overlord/mug.html

也许有人可以知道如果可能的话如何将其翻译成PHP.

新解决方案

在答案中

php png transparency image colors

11
推荐指数
1
解决办法
6197
查看次数

正则表达式 - 即使它是空的,也获取引号之间的字符串

"Testing if \"quotes\" are working."从此字符串中获取:
msgid "Testing if \"quotes\" are working.",我正在使用此模式:

~msgid(?:\s*)(\"[^\"](?:\\.|[^\"])*\")~m
Run Code Online (Sandbox Code Playgroud)

但是,如果我有,它会失败 msgid ""

即使字符串为空,我如何提取字符串?

regex

3
推荐指数
1
解决办法
1126
查看次数

标签 统计

colors ×1

image ×1

php ×1

png ×1

regex ×1

transparency ×1