Jump to content

Recommended Posts

Posted

This is my code, I think is same but your error is the $file var.

 

For example:

 

You have: $file = fopen('ftp://localhost/'.$name.'_'.$crest.'.bmp', 'r'); //fopen($filename,'rb');

 

Try to change, think that the file crest.php is in the same machine that server, replace "localhost" for the folder tree.

 

My $file var:

 

$file = fopen('/home/admin/gameserver/data/crests/'.$name.'_'.$crest.'.bmp', 'r'); //fopen($filename,'rb');

 

Because my server work under Linux and "fopen" read the folders in the machine.

 

 

I don't know to use with ftp protocol but if you want to use localhost take my mode.

 

If you use Windows probably is: $file = fopen('C:/server/gameserver/data/crests/'.$name.'_'.$crest.'.bmp', 'r'); //fopen($filename,'rb');

 

I'm not sure.

 

 

Hope that helps  ::)

 

 

<?


if(!empty($_GET['clan_crest'])){
$name = 'Crest';
$crest = $_GET['clan_crest'];
}
else if(!empty($_GET['ally_crest'])){
$name = 'AllyCrest';
$crest = $_GET['ally_crest'];
}
else
die('No Crest!');


$file = fopen('/home/admin/gameserver/data/crests/'.$name.'_'.$crest.'.bmp', 'r'); //fopen($filename,'rb');

$dds = fread($file,4);


if ($dds!=='DDS ') die("Error: no hay imagen DDS");


//DDS header

$hdrSize = readInt($file);

$hdrFlags = readInt($file);

$imgHeight = readInt($file)-4;

$imgWidth = readInt($file);

$imgPitch = readShort($file);



//DXT1 header

fseek($file, 84);

$dxt1 = fread($file,4);

if ($dxt1!=='DXT1') die("Error: no es formato DX1");


//here we go

fseek($file, 128);

header ("Content-type: image/png");

$img=imagecreatetruecolor($imgWidth,$imgHeight);


for ($y=-1; $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);

      }

    }

  }

}



imagepng($img);



## Functions needed

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;

}


?> 

Posted

Thank You very much friend I finally got it to work. I have wait so long to get this script working and if wasn't for your help I was never gonna get it done.

It is working perfectly.

One more time Thank you.

Posted

After a while, still

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\heroes.php on line 100

in heroes.php, some1 have any ideea?

  • 1 year later...
  • 2 months later...
  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...