gpt4 book ai didi

PHP GD 使用一张图片遮盖另一张图片,包括透明度

转载 作者:IT王子 更新时间:2023-10-29 00:59:06 26 4
gpt4 key购买 nike

我正在尝试创建一个拍摄图像的 PHP 脚本:

image1
http://i.stack.imgur.com/eNvlM.png

然后应用 PNG 图像:

mask
http://i.stack.imgur.com/iJr2I.png

作为面具。

最终结果需要保持透明:

result
http://i.stack.imgur.com/u0l0I.png

如果可能的话,我想在 GD 中做这件事,ImageMagick 现在不是一个真正的选择。

我该怎么做?

phalacee's post (in "PHP/GD, how to copy a circle from one image to another?")似乎是正确的,但我特别需要使用图像作为 mask ,而不是形状。

最佳答案

马特,

如果您使用黑色背景上的椭圆形白色填充而不是透明背景上的黑色填充来制作 png,则以下函数会执行此操作。

<?php
// Load source and mask
$source = imagecreatefrompng( '1.png' );
$mask = imagecreatefrompng( '2.png' );
// Apply mask to source
imagealphamask( $source, $mask );
// Output
header( "Content-type: image/png");
imagepng( $source );

function imagealphamask( &$picture, $mask ) {
// Get sizes and set up new picture
$xSize = imagesx( $picture );
$ySize = imagesy( $picture );
$newPicture = imagecreatetruecolor( $xSize, $ySize );
imagesavealpha( $newPicture, true );
imagefill( $newPicture, 0, 0, imagecolorallocatealpha( $newPicture, 0, 0, 0, 127 ) );

// Resize mask if necessary
if( $xSize != imagesx( $mask ) || $ySize != imagesy( $mask ) ) {
$tempPic = imagecreatetruecolor( $xSize, $ySize );
imagecopyresampled( $tempPic, $mask, 0, 0, 0, 0, $xSize, $ySize, imagesx( $mask ), imagesy( $mask ) );
imagedestroy( $mask );
$mask = $tempPic;
}

// Perform pixel-based alpha map application
for( $x = 0; $x < $xSize; $x++ ) {
for( $y = 0; $y < $ySize; $y++ ) {
$alpha = imagecolorsforindex( $mask, imagecolorat( $mask, $x, $y ) );
$alpha = 127 - floor( $alpha[ 'red' ] / 2 );
$color = imagecolorsforindex( $picture, imagecolorat( $picture, $x, $y ) );
imagesetpixel( $newPicture, $x, $y, imagecolorallocatealpha( $newPicture, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha ) );
}
}

// Copy back to original picture
imagedestroy( $picture );
$picture = $newPicture;
}

?>

关于PHP GD 使用一张图片遮盖另一张图片,包括透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com