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

Тема в разделе "Веб скрипты (WEB)", создана пользователем root, 1 окт 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); 
    ?>