gpt4 book ai didi

PHP 使用 imageline 和 XOR

转载 作者:可可西里 更新时间:2023-10-31 23:43:57 24 4
gpt4 key购买 nike

我正在尝试使用图像 GD 库通过 XOR 过滤器绘制线条。我一直无法找到一种简单的方法来执行此操作,因此绘制的线从白色“翻转”到黑色,反之亦然。有什么解决办法吗?

最佳答案

我很确定使用内置的 imageline PHP 函数无法绘制异或线。虽然您可以使用 imagesetpixel 和自定义线条绘制算法自己绘制。例如这样的事情可以工作(Bresenham Line Algorythm for PHP):

function line($im,$x1,$y1,$x2,$y2) {

$deltax=abs($x2-$x1);
$deltay=abs($y2-$y1);

if ($deltax>$deltay) {
$numpixels=$deltax+1;
$d=(2*$deltay)-$deltax;
$dinc1=$deltay << 1; $dinc2=($deltay-$deltax) << 1;
$xinc1=1; $xinc2=1;
$yinc1=0; $yinc2=1;
} else {
$numpixels=$deltay+1;
$d=(2*$deltax)-$deltay;
$dinc1=$deltax << 1; $dinc2=($deltax-$deltay)<<1;
$xinc1=0; $xinc2=1;
$yinc1=1; $yinc2=1;
}

if ($x1>$x2) {
$xinc1=-$xinc1;
$xinc2=-$xinc2;
}

if ($y1>$y2) {
$yinc1=-$yinc1;
$yinc2=-$yinc2;
}
$x=$x1;
$y=$y1;

for ($i=0;$i<$numpixels;$i++) {

$color_current = imagecolorat ( $im, $x, $y );
$r = ($color_current >> 16) & 0xFF;
$g = ($color_current >> 8) & 0xFF;
$b = $color_current & 0xFF;
$color = imagecolorallocate($im, 255 - $r, 255 - $g, 255 - $b);

imagesetpixel($im,$x,$y,$color);

if ($d<0) {
$d+=$dinc1;
$x+=$xinc1;
$y+=$yinc1;
} else {
$d+=$dinc2;
$x+=$xinc2;
$y+=$yinc2;
}
}
return ;
}

函数完美适用于从文件创建的图像。

关于PHP 使用 imageline 和 XOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846326/

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