За последние 24 часа нас посетили 19474 программиста и 1604 робота. Сейчас ищут 906 программистов ...

Накладывание картинки на картинку

Тема в разделе "Прочие вопросы по PHP", создана пользователем ByUNNAMED, 28 мар 2012.

  1. ByUNNAMED

    ByUNNAMED Активный пользователь

    С нами с:
    20 мар 2012
    Сообщения:
    13
    Симпатии:
    0
    Всем привет!
    У меня такой вопрос:
    Как можно сделать чтоб картинка ходила по картинке?
    Т.е я делаю игру, и мне нужно сделать игроку жизни, и чтоб они показывались графически (на картинке) и эта картинка ходила в зад или в перед в зависимости от количества жизней.
    Так вот я написал вот такой скрипт

    Код (Text):
    1. $max = $udata[hpall];//макс жизней
    2. $now = $udata[hp];//сколько есть жизней в данный момент
    3. $health = 100 / ($max / $now);
    4.  
    5.  
    6. $img="pic/hp.gif";//сама картинка
    7. $pic = ImageCreateFromgif($img);
    8. header('Content-Type: image/gif');
    9.  
    10. $black = imagecolorallocate($pic, 0, 0, 0);
    11. $white = imagecolorallocate($pic, 255, 0, 0, 20);
    12. imagefilledpolygon($pic, array(255,0, 0,20, $health,20, $health,0), 4, $black);
    13.  
    14.  
    15. imagestring($pic, 1, 3, 2, 'HP   '.$now.'/'.$max.'', $white);
    16. imagepolygon($pic, array(0,0, 0,11, 99,11, 99,0), 4, $white);
    17.  
    18. imagegif($pic);

    Но это не то что мне нужно.
    Это просто картинка ходит по черному фону,
    и как сделать чтоб она ходила по другой картинке (так как на картинке 2) я просто не знаю :(
    У меня получилось так как на картинке 1.

    [​IMG]
    [​IMG]
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Может, сделать средствами JavaScript?
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Мне даже интересно стало, сделал пример. Две картинки нужно сначала нарисовать для подложки и для полоски индикатора, экспортировать в png с прозрачностью. Положить шрифт arial.ttf рядом. Параметром "life" нужно передавать значение индикатора.
    Код (PHP):
    1. <?php
    2. $newWidth=(isset($_GET['life']))?(int)$_GET['life']:1;
    3. if($newWidth<1){$newWidth=1;}
    4. if($newWidth>400){$newWidth=400;}
    5.  
    6. define('IMGW',400);//ширина индикатора
    7. define('IMGH',30);//высота
    8.  
    9. $image=imagecreatetruecolor(IMGW,IMGH) or die('Cannot create image');
    10.  
    11. $source=imagecreatefrompng('line.png') or die('Cannot load original PNG');
    12. $size=getimagesize('line.png');
    13.  
    14. $source2=imagecreatefrompng('life.png') or die('Cannot load original PNG');
    15. $size2=getimagesize('life.png');
    16.  
    17.  
    18.  
    19.     $image,    // Идентификатор нового изображения
    20.     $source,    // Идентификатор исходного изображения
    21.     1,1,            // Координаты (x,y) верхнего левого угла
    22.                         // в новом изображении
    23.     0,0,            // Координаты (x,y) верхнего левого угла копируемого
    24.                         // блока существующего изображения
    25.     IMGW,            // Новая ширина копируемого блока
    26.     IMGH,            // Новая высота копируемого блока
    27.     $size[0],    // Ширина исходного копируемого блока
    28.     $size[1]    // Высота исходного копируемого блока
    29. );
    30.  
    31.     $image,    // Идентификатор нового изображения
    32.     $source2,    // Идентификатор исходного изображения
    33.     0,0,            // Координаты (x,y) верхнего левого угла
    34.                         // в новом изображении
    35.     0,0,            // Координаты (x,y) верхнего левого угла копируемого
    36.                         // блока существующего изображения
    37.     $newWidth,            // Новая ширина копируемого блока
    38.     IMGH,            // Новая высота копируемого блока
    39.     $size2[0],    // Ширина исходного копируемого блока
    40.     $size2[1]    // Высота исходного копируемого блока
    41. );
    42.  
    43.  
    44.     $image,            // как всегда, идентификатор ресурса
    45.     12,                    // размер шрифта
    46.     0,                    // угол наклона шрифта
    47.     170, 20,                // координаты (x,y), соответствующие левому нижнему
    48.                             // углу первого символа
    49.     0xFFFFFF,        // цвет шрифта
    50.     'arial.ttf',    // имя ttf-файла
    51.     $newWidth.'/400'
    52. );
    53.  
    54. header('Content-type: image/png');
    55. imagepng($image);
    56. imagedestroy($source2);
    57. imagedestroy($source);
    58. imagedestroy($image);
    59. ?>
    Вот эта статья помогла http://www.php5.ru/articles/image