在PHP中用图案图像填充图像的透明部分

时间:2017-10-28 17:19:36

标签: php image imagemagick image-manipulation php-gd

我正在尝试使用GD库在透明图像上应用图案。

我有一个反透明图像和几个图案图像应用于占位符。

有关如何使用GD库或图像魔法实现此目的的任何建议。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

我可以告诉你如何在ImageMagick Unix命令行语法中做到这一点。基本的想法是在衬衫和平铺图案之间使用 - 组合强光。

第一步是修剪图案图像周围的参差不齐的边框。所以我手动裁剪它看起来如下所以它可以平铺而没有显示的参差不齐的边框:

enter image description here

当您使用-compose hardlight时,如果图像的平均颜色为中灰色(50%),效果最佳。所以第一件事是获得平均灰度值和与灰色中间的差异:

mean=`convert shirt.png -scale 1x1! -alpha off -format "%[fx:100*mean]\n" info:`
diff=`convert xc: -format "%[fx:50-$mean)]" info:`
echo "mean=$mean; diff=$diff;"

mean=86.9006; diff=-36.9006;

注意:上述方法仅获得不透明衬衫的平均灰度值,并忽略透明区域。

接下来,您需要删除Alpha通道并将其保存以供日后使用。然后通过添加所需的差异来修改没有alpha通道的图像,使其达到中灰色的平均值。然后你需要修改对比度以增加它,以便显示皱纹的阴影。

convert shirt.png -alpha extract mask.png

enter image description here

convert shirt.png -alpha off -evaluate add $diff% -sigmoidal-contrast 10,50% shirt_mod.png

enter image description here

然后通过调整大小来平铺图案,使图案比原始图案更密集。最后用hardlight复合并将面具放回alpha通道。

convert shirt_mod.png \
\( -clone 0 -resize 400% -tile pattern.png -draw "color 0,0 reset" -resize 25% \) \
-compose hardlight -composite \
mask.png -alpha off -compose copy_opacity -composite \
shirt_pattern.png

enter image description here

请注意,有很多方法可以平铺图案以填充某些图像尺寸。见http://www.imagemagick.org/Usage/canvas/#tile

答案 1 :(得分:1)

您可以在创建平铺图像时使用-modulate亮度,饱和度,色调来更改亮度。无变化的默认值为100.因此,如果要降低亮度,请将其从100降低.-调制还允许您更改颜色的饱和度甚至色调。如果图案更紧凑,更像是你的图案,它也可能有所帮助。所以我改变了resize参数。

所以使用与我之前的帖子相同的命令,但是按照以下方式更改最后一个

亮度= 95

convert shirt_mod.png \
\( -clone 0 -resize 500% -tile pattern.png -draw "color 0,0 reset" -resize 20% -modulate 95,100,100 \) \
-compose hardlight -composite \
mask.png -alpha off -compose copy_opacity -composite \
shirt_pattern1.png

No Silver Bullet

亮度= 90

convert shirt_mod.png \
\( -clone 0 -resize 500% -tile pattern.png -draw "color 0,0 reset" -resize 20% -modulate 90,100,100 \) \
-compose hardlight -composite \
mask.png -alpha off -compose copy_opacity -composite \
shirt_pattern2.png

enter image description here

根据需要调整调整大小和亮度。