At 15:57 20.03.2003, [EMAIL PROTECTED] spoke out and said:
--------------------[snip]--------------------
>In order to distribute a single script I would like to store a small
>image internally. Is this at all possible with PHP? How would I go about
>it? Please feel free to rtfm me to the relevant sections.
--------------------[snip]-------------------- 

You could make some script to retrieve the hex values of the image byte by
byte, then create a source file like
    $imgdata = '\xff\x19\x00\x12   etc...;

Then when you're about to send the image simply transmit the correct
header() and echo out the data.

This little sample works just perfectly:

----------------------------------------------------
// use one of your files here, of course...
$file = 'images/dart.gif';
$hf = fopen($file, 'r') or die("Can't open $file for reading");
$bin = fread($hf, filesize($file));
fclose($hf);
$asc = '$img_data = "';
for ($i = 0, $len = strlen($bin); $i < $len; ++$i) {
        if ($i && !($i % 16))
                $asc .= "\" .\n\t\"";
        $asc .= '\\x' . bin2hex(substr($bin, $i, 1));
}
$asc .= '";';

// $asc now contains the hex-coded binary file.
// Example (a real gif - try it)
$img_data =
"\x47\x49\x46\x38\x39\x61\x20\x00\x20\x00\xa2\xff\x00\x00\x00\x00" .
"\xff\x00\x00\xff\xff\x00\x00\x00\xff\xc0\xc0\xc0\x00\x00\x00\x00" .
"\x00\x00\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x04\x00\x2c\x00\x00" .
"\x00\x00\x20\x00\x20\x00\x40\x03\xae\x48\xba\xac\xf0\x10\x34\x36" .
"\x06\x83\x21\x87\xc8\xa3\xd0\xd0\x82\x65\xe3\xd6\x81\x0f\x2a\x89" .
"\x25\x79\x6a\xe6\x33\xb1\x29\x6c\xab\x80\xd0\x94\x11\x8c\x7d\x31" .
"\x80\xca\x51\x0b\xde\x70\xc3\x19\xa1\xc3\x8c\x28\x67\xcd\xe8\xa2" .
"\x52\xb9\xb4\x82\x57\x41\xc8\x2a\x74\x15\x6f\xda\xe2\x96\x27\x7e" .
"\x0c\x04\x5a\xd5\x90\xfc\x6d\xf5\xbc\x34\x5f\xd4\x2d\x83\x5e\x8f" .
"\xc1\xe7\x93\xa9\xef\x2f\xe7\x75\x53\x54\x76\x6f\x36\x1d\x0a\x02" .
"\x55\x3b\x77\x78\x26\x5a\x84\x5d\x5e\x4d\x19\x1f\x4e\x71\x38\x91" .
"\x5e\x69\x49\x7f\x91\x8c\x94\x31\x49\x6c\x72\x39\x40\x5e\x6b\x65" .
"\x9e\x66\x03\xa9\xa8\xaa\x99\x1c\xa4\xa2\xad\x8d\xa1\x70\x44\xb0" .
"\x85\x92\xb9\x2b\xb8\xbc\x93\x38\x90\xb5\x86\x5b\x7b\xb1\x37\x87" .
"\x7e\x34\x73\xca\xcd\xce\x09\x00\x3b"; 

// Now write the stuff to a file
$hf = fopen("$file.asc", 'w') or die("Can't open $file.asc for writing");
fwrite($hf, $asc);
fclose($hf);

// Here you may either include the file, or copy/paste its contents into
your own code.
// The next lines are just to test the stuff - adjust the Content-Type
header to your needs:

header('Content-Type: image/gif');
eval($asc);      // this will render the binary content into $img_data
echo $img_data;  // send it
exit;            // and voila
----------------------------------------------------

Note that reading the file is only needed once as a "tool" to create the
"ascii version" of the binary file.


-- 
   >O Ernest E. Vogelsinger 
   (\) ICQ #13394035 
    ^ http://www.vogelsinger.at/


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to