【在下是php新手】,请各位兄弟帮忙看段代码找bug

ajn_sailing 2009-07-24 01:38:17
这段代码实现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);
}
}


程序依次对每个像素点处理,现在的问题是处理一些点以后就失败了,不再循环,花费几天时间实在找不出哪里错误
数组的定义 使用有问题吗?
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
骄傲青蛙 2009-07-25
  • 打赏
  • 举报
回复
看得确实累啊
fenyao 2009-07-25
  • 打赏
  • 举报
回复
看得确实累啊
ruanchao 2009-07-25
  • 打赏
  • 举报
回复
还真没有弄过,帮你顶上去,等高人帮你看吧。
ajn_sailing 2009-07-25
  • 打赏
  • 举报
回复
恩,程序没问题,就是因为默认超时时间30秒太短,重新设置超时时间就对了
ajn_sailing 2009-07-25
  • 打赏
  • 举报
回复
这段程序处理小图片时没问题,大图片却不行,往往中途退出

是不是php有超时设置?
ajn_sailing 2009-07-24
  • 打赏
  • 举报
回复
这就是后台处理,前台的代码应该没问题,已经有其他算法测试通过
tfxg 2009-07-24
  • 打赏
  • 举报
回复
看得是累人
Gdj 2009-07-24
  • 打赏
  • 举报
回复
代码不完整看得累人

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧