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...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock