我总是用GdImage得到一个未捕获的TypeError,我不知道如何解决它



我是PHP新手,我的第一个项目是将网站从PHP 5迁移到PHP 8。一开始很容易解决一些错误,但现在出现了thios错误:

致命错误:未捕获的类型错误:imagecolorallocatelpha((:参数#1($image(的类型必须为GdImage,在C:\examplep\htdocs\Verbrauchmaterial\daten\pchart\class\pDraw.class.php:1206堆栈跟踪:#0 C:\examplep\tdocs\Verrauchmaterial\daten\pcart\class.pDraw.class.php(1206(:imagecolorallocatelpha(null,17018387,0;allocateColor(NULL,170183870(#2 C:\examplep\htdocs\Verbrauchmaterial\administration\server\loginstat.php(53(:pDraw->drawFilled矩形(0,0,700,400,数组(#3 C:\examplep\htdocs\Verbrauchmaterial\administration\body.php

因为我无法解决这个错误,我想问,如果有人可以查看我的代码,也许可以告诉我出了什么问题

这是我的代码,直到第1206行(如果有添加代码文件的选项,我可以将其添加到问题中(:

if ( $X < 0 || $Y < 0 || $X >= $this->XSize || $Y >= $this->YSize )
return(-1);
if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; }
if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; }
if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; }
if ( !$this->Antialias )
{
if ( $this->Shadow && $this->ShadowX != 0 && $this->ShadowY != 0 )
{
$ShadowColor = $this->allocateColor($this->Picture,$this->ShadowR,$this->ShadowG,$this->ShadowB,$this->Shadowa);
imagesetpixel($this->Picture,$X+$this->ShadowX,$Y+$this->ShadowY,$ShadowColor);
}
$PlotColor = $this->allocateColor($this->Picture,$R,$G,$B,$Alpha);
imagesetpixel($this->Picture,$X,$Y,$PlotColor);
return(0);
}
$Plot = "";
$Xi   = floor($X);
$Yi   = floor($Y);
if ( $Xi == $X && $Yi == $Y)
{
if ( $Alpha == 100 )
$this->drawAlphaPixel($X,$Y,100,$R,$G,$B);
else
$this->drawAlphaPixel($X,$Y,$Alpha,$R,$G,$B);
}
else
{
$Alpha1 = (((1 - ($X - floor($X))) * (1 - ($Y - floor($Y))) * 100) / 100) * $Alpha;
if ( $Alpha1 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi,$Yi,$Alpha1,$R,$G,$B); }
$Alpha2 = ((($X - floor($X)) * (1 - ($Y - floor($Y))) * 100) / 100) * $Alpha;
if ( $Alpha2 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi+1,$Yi,$Alpha2,$R,$G,$B); }
$Alpha3 = (((1 - ($X - floor($X))) * ($Y - floor($Y)) * 100) / 100) * $Alpha;
if ( $Alpha3 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi,$Yi+1,$Alpha3,$R,$G,$B); }
$Alpha4 = ((($X - floor($X)) * ($Y - floor($Y)) * 100) / 100) * $Alpha;
if ( $Alpha4 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi+1,$Yi+1,$Alpha4,$R,$G,$B); }
}
}

/*绘制半透明像素*/函数drawAlphaPixel($X,$Y,$Alpha,$R,$G,$B({if(isset($this->Mask[$X](({if(issset($this->马斯克[$X][$Y](({return(0(;}}

if ( $X < 0 || $Y < 0 || $X >= $this->XSize || $Y >= $this->YSize )
return(-1);
if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; }
if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; }
if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; }
if ( $this->Shadow && $this->ShadowX != 0 && $this->ShadowY != 0 )
{
$AlphaFactor = floor(($Alpha / 100) * $this->Shadowa);
$ShadowColor = $this->allocateColor($this->Picture,$this->ShadowR,$this->ShadowG,$this->ShadowB,$AlphaFactor);
imagesetpixel($this->Picture,$X+$this->ShadowX,$Y+$this->ShadowY,$ShadowColor);
}
$C_Aliased = $this->allocateColor($this->Picture,$R,$G,$B,$Alpha);
imagesetpixel($this->Picture,$X,$Y,$C_Aliased);
}

/*将失语症转换为基底10/函数convertAlpha($AlphaValue({return((127/100((100-$AlphaValue((;}

/*分配具有透明度的颜色*/

函数分配器颜色($Picture,$R,$G,$B,$Alpha=100(

{
if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; }
if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; }
if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; }
if ( $Alpha < 0 )  { $Alpha = 0; }
if ( $Alpha > 100) { $Alpha = 100; }
$Alpha = $this->convertAlpha($Alpha); 
return(imagecolorallocatealpha($Picture,$R,$G,$B,$Alpha));
}

`最后一行是1206

请参阅:pChart在主机服务器上工作,但不是XAMPP:未捕获错误:无法将字符串偏移量用作数组

将pChart版本更改为以下版本:https://github.com/swijetunge/pChart/tree/v2.2.0

相关内容

最新更新