Re: array_search function bugged?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, March 20, 2006 8:35 pm, je killen wrote:

>> I really don't understand, though, why you are doing things the way
>> you describe...
> I only want one image file for each distinct letter, no repeats
> because
> I can't put two or more files with the same name
> in the same dir. The images need to be drug around DHTML style and
> reassembled into the correct word. Javascript
> needs to be able to establish when the chars are in the correct order
> so I need to have php feed it a formula to refer to.

Okay, now we are getting somewhere!

The easiest way to meet the unique filename requirement is to name
each file after its letter:
a.png
b.png
c.png

Of course, they only need to APPEAR that way to the browser and
Javascript.

In reality, you may not actually have a file named "a.png" at all.

For example, if your HTML is like this:
<img src="/drawchar.php/a.png" />

And you have a PHP script drawchar.php like this:
<?php
  //EG: $path_info will be "/a.png",
  //because that is what is in tha URL AFTER the PHP script name
  $path_info = $_SERVER['PATH_INFO'];

  //get JUST the one letter
  $char = substr($path_info, 1, 1);

  //Create the image:
  $image = imagecreatetruecolor(40, 10);

  //Boring colors, but works for now:
  $white = imagecolorallocate($image, 255, 255, 255);
  $black = imagecolorallocate($image, 0, 0, 0);

  //make the background white:
  imagefilledrectangle($image, 0, 0, 39, 9, $white);

  //draw the character:
  $font = 3; //Fonts can be 1 through 5
  $x = 2;
  $y = 38;
  imagechar($image, $font, $x, $y, $char, $black);

  //Find out how big the image is:
  ob_start();
  imagepng($image);
  $image_raw = ob_get_contents();
  ob_end_clean();
  $image_length = strlen($image_raw);

  //Send suitable headers:
  header("Content-type: image/png");
  header("Content-length: $image_length");

  //Send the data:
  echo $image_raw;
?>

You can now just pass the word 'dissatisfaction' around, and use PHP
or JavaScript to output individual images.

I'll do it in PHP:

<?php
  $word = 'dissatisfaction';
  for ($i = 0, $len = strlen($word); $i < $len; $i++){
    $char = $word[$i]; //or use substr if you like
    echo "<img src=\"/drawchar.php/$char.png\" />";
  }
?>

I haven't run this code to test it, so there might be a typo, but it's
going to be MUCH easier to maintain than what you've got going...

-- 
Like Music?
http://l-i-e.com/artists.htm

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux