Как сдвинуть рисунок?

elfebet

Новичок
Как сдвинуть рисунок?

нужно рисунок сдвинуть в вверх на 10 шагов. (хочу сделать по шаговую анимацию)
из 1 рисунка сделать 16 рисунков и каждый рисунок как бы сдвигается вверх. Вот я такое хочу сделать.
не подскажете как? при помощи какой функции.
 

Фанат

oncle terrible
Команда форума
почему бы тебе не посмотреть в мануале в разделе функций для работы с рисунками?
 

elfebet

Новичок
люди ну помогите пожалуйста!
ведь только новичок и пхп знаю всего лишь 2 месяца.
вот ksnk предложил использовать imagecopy и как в моей задаче это использовать.
скажите пожалуйста более контретно (желательно с примером) а то я дуб дубом.
 

Andreika

"PHP for nubies" reader
дык картинки пусть сдвигает тот, кому это надо... а дуб дубом должен занимацца желудями
 

elfebet

Новичок
а что на этом форуме везде так.... более конкретно никто не помогает?
 

Andreika

"PHP for nubies" reader
неа, не помогают... дадут ссылку на мануал и все.. вообще обнаглели эти помогающие - еще и читать эту ссылку заставляют.. лучше б код дали, да?
в общем ситуация у тя незавидная - или самому читать хелп или желуди ждут
 
Таким и останешся если сам не разберёшся.
и пхп знаю всего лишь 2 месяца
Лично мой прогрес в том, что я сам раздуплил PHP за 2 месяца и начал пробовать писать свою первую онлайн игру.
Учись, учиться!
 

elfebet

Новичок
вообще обнаглели эти помогающие - еще и читать эту ссылку заставляют
да нет, все правильно помогающие делают....
просто у меня еще не те знания и как все люди захожу на форум и прошу помощи
p.s так никто и не подскажет?
 

Фанат

oncle terrible
Команда форума
подсказать - тебе подсказали.
дальше остаётся только готовый код за тебя написать.
тебе это надо?
 

elfebet

Новичок
ну вот смотрите я сделал пример который изображение меняет сверрху ввниз либо слева на право
<?php
$image = imagecreatefromgif("img.gif");
echo imagegif(imageMove($image));

function imageMove($image $int)
{
$w = imagesx($image);
$h = imagesy($image);
$data = imagecreate($w, $h);
if ($int)
{
for ($y = 0; $y < $h; $y++)
{
imagecopy($data, $image, 0, $y, 0, $h - $y - 1, $w, 1);
}
}
else
{
for ($x = 0; $x < $w; $x++)
{
imagecopy($data, $image, $x, 0, $w-$x-1, 0, 1, $h);
}
}
return $data;
}
?>
а вот сдвинуть рисунок по вертикали я не понял как. вот к примеру изображение 32x32 и надо сделать чтоб он передвигал по 2 пикселя с верху вниз и так должен создать 16 рисунков (32/2=16). я как понял надо это делать с помощью двойного цикла и в первом сохранять изображение (16 штук). но я не могу понять как это сделать.

-~{}~ 25.05.06 18:44:

ой в коде ошибка, вот правлиьный код
<?php
$image = imagecreatefromgif("img.gif");
echo imagegif(imageMove($image, 0));
function imageMove($image, $int)
{
$w = imagesx($image);
$h = imagesy($image);
$data = imagecreate($w, $h);
if ($int)
{
for ($y = 0; $y < $h; $y++)
{
imagecopy($data, $image, 0, $y, 0, $h - $y - 1, $w, 1);
}
}
else
{
for ($x = 0; $x < $w; $x++)
{
imagecopy($data, $image, $x, 0, $w-$x-1, 0, 1, $h);
}
}
return $data;
}
?>
 

elfebet

Новичок
та это я понял, подскажите как мне правильно организовать цикл
чтобы перемещать каждые 2 верхние пикселы вниз.
1 2 3 4 5 6 7 8 9 0
3 4 5 6 7 8 9 0 1 2
5 6 7 8 9 0 1 2 3 4
7 8 9 0 1 2 3 4 5 6
9 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9 0
типа вот такого только с верху вниз
 

ksnk

прохожий
Автор оригинала: elfebet
та это я понял, подскажите как мне правильно организовать цикл
...
А с чего ты взял, что функция может копировать только по одной строчке изображения?

Вот это может сдвинуть исходное изображение вправо-влево -вверх- вниз:
PHP:
function imageMove($image, $dx,$dy)
{
  $w = imagesx($image);
  $h = imagesy($image);
  $data = imagecreate($w, $h);
  if ((abs($dx)>=$w)||(abs($dy)>=$h)) return $data ;

  imagecopy($data, $image, max(0,$dx), max(0,$dy),
                           max(0,-$dx), max(0,-$dy), 
                           $w-abs($dx), $h-abs($dy));
  return $data ;
}
 
Сверху