【在下是php新手】,请各位兄弟帮忙看段代码找bug
这段代码实现oil paint图像特效
for($i=$nY; $i<$nY+$nH; $i++)
{
for($j=$nX; $j<$nX+$nW; $j++)
{
$intensities = array();
$red = array();
$green = array();
$blue = array();
for ( $k = 0; $k < 256; $k++ )
{
$intensities[$k] = 0;
$red[$k] = 0;
$green[$k] = 0;
$blue[$k] = 0;
}
for ($m = -5;$m < 6;$m++)
{
$t = $m+$i;
if (($t < $nY) || ($t >= ($nY+$nH)))
continue;
for ($n = -5;$n < 6;$n++)
{
$t = $n+$j;
if (($t < $nX) || ($t >= ($nX+$nW)))
continue;
$pos = imagecolorat($hOldFile, $n+$j, $m+$i);
list($r, $g, $b) = array((($pos>>16)&0xFF), (($pos>>8)&0xFF), ($pos&0xFF));
$gst = (int)($r*0.15 + $g*0.5 + $b*0.35);
if ($gst>255)
{
$gst = 255;
}
$intensities[$gst]++;
$red[$gst]+= $r;
$green[$gst]+= $g;
$blue[$gst]+= $b;
//WriteLog("ddd.txt",$intensities[$gst].",".$red[$gst].",".$green[$gst].",".$blue[$gst].",".$gst);WriteLog("ddd.txt","\r\n");
}
}
$maxIntensity = 0;
$kk = 0;
for ( $k2 = 0; $k2 < 256; $k2++ )
{
if ( $intensities[$k2] > $kk )
{
$maxIntensity = $k2;
$kk = $intensities[$k2];
}
}
// set destination pixel
if ($intensities[$maxIntensity] == 0)
$inter = 1;
$r1 = $red[$maxIntensity]/$inter;
$g1 = $green[$maxIntensity]/$inter;
$b1 = $blue[$maxIntensity]/$inter;
$col = imagecolorallocate($hNewFile,$r1,$g1,$b1);
imagesetpixel($hNewFile, $j, $i, $col);
}
}
程序依次对每个像素点处理,现在的问题是处理一些点以后就失败了,不再循环,花费几天时间实在找不出哪里错误
数组的定义 使用有问题吗?