[SCRIPT] Чтение значков кланов из БД

Тема в разделе "Веб скрипты (WEB)", создана пользователем root, 5 окт 2014.

  1. root

    root Administrator Команда форума Administrator Moderator Developers Team

    Регистрация:
    23 авг 2014
    Сообщения:
    253
    Симпатии:
    56
    Баллы:
    11
    Код:
    <?php  $ms_server = "SERVER";  
    $ms_user = "USER";  
    $ms_password = "PASS";  
    $ms_lin2world = "lin2world";  
    $ms_con = mssql_connect($ms_server, $ms_user, $ms_password);  
    mssql_select_db($ms_lin2world, $ms_con);  
    $sql = "  
        SELECT  
            bitmap  
        FROM  
            Pledge_Crest  
        WHERE  
            (crest_id =  
                (  
                    SELECT  
                        crest_id  
                    FROM  
                        pledge  
                    WHERE  
                        name = '".mysql_escape_string($_GET['clan_name'])."'  
                )  
            )  
            OR  
            (  
                crest_id =  
                (  
                    SELECT  
                        crest_id  
                    FROM  
                        pledge  
                    WHERE  
                        pledge_id = '".mysql_escape_string($_GET['clan_id'])."'  
                )  
            )  
    ";  
    $ms_query = mssql_query($sql, $ms_con);  
    $clan_crest = mssql_fetch_array($ms_query);  
    $rnd_file = tmpfile();  
    fwrite($rnd_file, $clan_crest['bitmap']);  
    fseek($rnd_file, 0);  
    
    
    function readInt($file)  
    {  
        $b4 = ord(fgetc($file));  
        $b3 = ord(fgetc($file));  
        $b2 = ord(fgetc($file));  
        $b1 = ord(fgetc($file));  
        return ($b1<<24)|($b2<<16)|($b3<<8)|$b4;  
    }  
    
    
    
    
    function readShort($file)  
    {  
        $b2 = ord(fgetc($file));  
        $b1 = ord(fgetc($file));  
        return ($b1<<8)|$b2;  
    }  
    
    
    
    
    //$file = &$rnd_file; //fopen($filename,'rb');  
    $file = $rnd_file; //fopen($filename,'rb');  
    $dds = fread($file,4);  
    
    
    if ($dds!=='DDS ')  
    {  
        die("Error: not DDS");  
    }  
    
    
    //DDS header  
    $hdrSize = readInt($file);  
    $hdrFlags = readInt($file);  
    $imgHeight = readInt($file);  
    $imgWidth = readInt($file);  
    $imgPitch = readShort($file);  
    
    
    
    
    //DXT1 header  
    
    
    fseek($file, 84);  
    
    
    $dxt1 = fread($file,4);  
    
    
    //echo 'Header Size: '.$hdrSize.'<br>';  
    //echo 'Header Flags: '.$hdrFlags.'<br>';  
    //echo 'Image Width: '.$imgWidth.'<br>';  
    //echo 'Image Height: '.$imgHeight.'<br>';  
    //echo 'Image Pitch: '.$imgPitch.'<br>';  
    //echo 'Image Format: '.$dxt1.'<br>';  
    
    
    if ($dxt1!=='DXT1')  
    {  
       die("Error: not DX1 format");  
    }  
    
    
    
    
    //here we go  
    fseek($file, 128);  
    
    
    
    
    header ("Content-type: image/png");  
    $img=imagecreatetruecolor($imgWidth,$imgHeight);  
    
    
    
    
    for ($y=0; $y<$imgHeight/4; $y++)  
    {  
      for ($x=0; $x<$imgWidth/4; $x++)  
      {  
        $color0_16 = readShort($file);  
        $color1_16 = readShort($file);  
        $r0 = ($color0_16 >> 11) << 3;  
        $g0 = (($color0_16 >> 5) & 63) << 2;  
        $b0 = ($color0_16 & 31) << 3;  
        $r1 = ($color1_16 >> 11) << 3;  
        $g1 = (($color1_16 >> 5) & 63) << 2;  
        $b1 = ($color1_16 & 31) << 3;  
        $color0_32 = imagecolorallocate($img,$r0,$g0,$b0);  
        $color1_32 = imagecolorallocate($img,$r1,$g1,$b1);  
        $color01_32 = imagecolorallocate($img,$r0/2+$r1/2,$g0/2+$g1/2,$b0/2+$b1/2);  
        $black = imagecolorallocate($img,0,0,0);  
        $data = readInt($file);  
        for ($yy=0;$yy<4;$yy++)  
        {  
          for ($xx=0;$xx<4;$xx++)  
          {  
            $bb = $data & 3;  
            $data = $data >> 2;  
            switch ($bb)  
            {  
              case 0: $c = $color0_32; break;  
              case 1: $c = $color1_32; break;  
              case 2: $c = $color01_32; break;  
              default: $c = $black; break;  
            }  
            imagesetpixel($img,$x*4+$xx,$y*4+$yy,$c);  
          }  
        }  
      }  
    }  
    
    
    //output  
    imagepng($img);  
    ?>