readdir 返回的是不含路径的文件名
你不加区别的都放在 $dirlist 中,是会出现混乱的
虽然读取 2 时,你初始了 $i,但你没有初始 $dirlist。

解决方案 »

  1.   


    $dirlist=array();
    $types=array("image/jpg","image/jpeg",);  //"image/gif","image/png");
    for($j=1;$j<=2;$j++)
    {
    $dirname="img2/$j/*.*"; //获取该系列图片下的所有照片文件名
    $f_lists = glob($dirname);
       
    foreach($f_lists as $f)
    {
    //echo $f;
    if(file_exists($f) and is_file($f)   )
    {
    $f_info=getimagesize($f);

    if(in_array($f_info['mime'],$types))
    {
    $dirlist[]=$f;
    }
    }
    }
    }//print_r($dirlist);
    foreach($dirlist as $f)
    imgtypecheck($f);function imgtypecheck($filename)
    {
        $aaa=false;
        
        if($aaa)//调试用代码
        {
        echo "函数没有停止<br>";
        }
        else
        {
        echo "aaa为false<br>";
        }    echo "$filename<br>";
        $im=imagecreatefromjpeg($filename);    $arr=getimagesize($filename);//获取图像尺寸
        $rgb=imagecolorat($im,8,$arr[1]-6);    $r = ($rgb >> 16) & 0xFF ;
        $g = ($rgb >> 8) & 0xFF ;
        $b = $rgb & 0xFF;    $img_type=1;
        if(!($r>100&&$r<170))
            $img_type=false;
        if(!($g>100&&$g<170))
            $img_type=false;
        if(!($b>100&&$b<170))
            $img_type=false;    if($img_type)
            echo "符合水印类型<br>";
        else
            echo "不符合水印类型<br>";
        echo "<hr>";
    }