我今天不想编写和调试大量 PHP,但可以在命令行上向您展示一些您应该能够翻译成 PHP 的技术。
您可以通过将背景图像的大小调整为单个 1x1 像素然后以 RGB 术语打印其值来获取背景图像的平均值:
convert background.jpg -scale 1x1 -format "%[pixel:p{0,0}]" info:
srgb(219,199,164)
如果我取该值并从中制作一个实心正方形,您会看到它是您建议的米色:
convert -size 100x100 xc:"srgb(219,199,164)" mean.png
你或许可以使用getImageChannelStatistics()
在 PHP 中。
如果我现在采用该颜色,并将其设置为着色的填充颜色并应用着色,我会得到:
convert top.png -fill "srgb(219,199,164)" -tint 100% result.png
在 PHP 中,您会看到 tintImage()。
右侧发生了可怕的事情 - 我不明白,但如果我从您的顶部图像中提取不透明度并将其重新应用于结果图像,它就会消失:
convert top.png -alpha extract alpha.pgm
convert top.png -fill "srgb(219,199,164)" -tint 100% alpha.pgm -compose copyopacity -composite result.png