我搜索了很多,我发现只有几个解决方案(谷歌和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.
新解决方案
在答案中
要"Testing if \"quotes\" are working."从此字符串中获取:
msgid "Testing if \"quotes\" are working.",我正在使用此模式:
~msgid(?:\s*)(\"[^\"](?:\\.|[^\"])*\")~m
Run Code Online (Sandbox Code Playgroud)
但是,如果我有,它会失败 msgid ""
即使字符串为空,我如何提取字符串?