我正在使用PHPImageWorkshop library来叠加透明图像(这是它应该擅长的事情之一,所以我一定做错了)!
当我只指定基础层(透明的PNG徽标)时,一切都按预期工作,请参阅代码:
<?php
use PHPImageWorkshop\ImageWorkshop;
require_once('lib/PHPImageWorkshop/ImageWorkshop.php');
$base_layer = ImageWorkshop::initFromPath( __DIR__.'/img/bg.png' );
$dirPath = dirname(__FILE__).'/output/';
$filename = "file.png";
$base_layer->save( $dirPath, $filename, false, null, 95 );
?>
<img src="/output/file.png">
...结果是一个透明的PNG,带有我指定的背景图像,正如预期的那样(除了复制图像,我真的没有做任何事情。)
当我尝试在背景图层上添加较小的图像而不是覆盖它时会出现问题,它会覆盖我的背景图像,完全替换它?
在这里,我尝试创建一个小的灰色方块(100 x 100),并将其放在我的背景徽标中间(使用我现有的代码):
<?php
use PHPImageWorkshop\ImageWorkshop;
require_once('lib/PHPImageWorkshop/ImageWorkshop.php');
$base_layer = ImageWorkshop::initFromPath( __DIR__.'/img/bg.png' );
// ADDED 2 LINES--------------------------------------------------
$layer_two = ImageWorkshop::initVirginLayer( 100, 100, 'CCCCCC' );
$base_layer->addLayerOnTop( $layer_two, 0, 100, 'MT' );
$dirPath = dirname(__FILE__).'/output/';
$filename = "file.png";
$base_layer->save( $dirPath, $filename, false, null, 95 );
?>
<img src="/output/file.png">
现在我的背景徽标不再可见,我在透明图层上有一个小灰色方块,大小与我的背景图像相同。
我做错了什么,拜托?
感谢您的期待...
答案 0 :(得分:0)
我在24小时后尝试了所有这一切......这不是我的代码,而是我用于背景图层的PNG图像有问题。
之前已将其保存为索引颜色文件(而不是RGB),然后重新保存为PNG,因此它处于错误的颜色模式。
我最终使用库存PNG图像尝试了相同的代码,一切正常!