|
|
|
| нужно рисунок сдвинуть в вверх на 10 шагов. (хочу сделать по шаговую анимацию)
из 1 рисунка сделать 16 рисунков и каждый рисунок как бы сдвигается вверх. Вот я такое хочу сделать.
не подскажете как? желательно с примером. | |
|
|
|
|
|
|
|
для: alik
(25.05.2006 в 18:48)
| | Думаю GDlib тут вам не подойдёт. Он не умеет работать с анимацией. А почему бы не сделать это ручками в специализированной проге? | |
|
|
|
|
|
|
|
для: Саня
(25.05.2006 в 21:46)
| | на счет анимации я буду использовать программу imagemagick типа такой строкой
exec("/usr/bin/convert -delay 2 -loop 10 test*.gif test-anim.gif");
|
проблема в том что нужно и 1 рисунка продублировать 16 и каждый рисунок как бы свдигается вверх. я так понял нужно использовать imagecopy. но я немогу сделать правильный цикл (видно знаний нехватает). к примеру рисунок 32х32 и надо каждый 2 верхних пикселя перемещать вниз (32/2= 16 рисунков). Я вот сделал примерчик который рисунок меняет сверрху ввниз либо слева на право
<?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;
}
?>
|
а вот сдвинуть рисунок по вертикали я не понял как. я как понял надо это делать с помощью двойного цикла и в первом сохранять изображение (16 штук). но я не могу понять как это сделать.
типа вот такого только с верху вниз
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 | |
|
|
|
|
|
|
|
для: alik
(26.05.2006 в 09:47)
| | люди ну помогите пожалуйста, очень прошу. | |
|
|
|
|
|
|
|
для: alik
(26.05.2006 в 12:00)
| | все таки получилось вот как я сделал
<?php
$image = imagecreatefromgif("image/img32.gif");
imageMove($image, "up");
function imageMove($image, $move)
{
$w = imagesx($image);
$h = imagesy($image);
$data = imagecreate($w, $h);
$n=0;
if ($move=="up")
{
for ($y = 0; $y < $h; $y+=2)
{
$n++;
for ($x = 0; $x < $y; $x++)
imagecopy($data, $image, 0, $h-$y, 0, 0, $w, $x);
imagecopy($data, $image, 0, 0, 0, $y, $w, $h-$y);
imagegif($data, "test_".$move."-".$n.".gif");
}
}
else if ($move=="down")
{
for ($y = $h; $y > 0; $y-=2)
{
$n++;
for ($x = 0; $x < $y; $x++)
imagecopy($data, $image, 0, $h-$y, 0, 0, $w, $x);
imagecopy($data, $image, 0, 0, 0, $y, $w, $h-$x);
imagegif($data, "test_".$move."-".$n.".gif");
}
}
else if ($move=="left")
{
for ($y = 0; $y < $w; $y+=2)
{
$n++;
for ($x = 0; $x < $y; $x++)
imagecopy($data, $image, $w-$y, 0, 0, 0, $x, $h);
imagecopy($data, $image, 0, 0, $y, 0, $w-$y, $h);
imagegif($data, "test_".$move."-".$n.".gif");
}
}
else if ($move=="right")
{
for ($y = $w; $y > 0; $y-=2)
{
$n++;
for ($x = 0; $x < $y; $x++)
imagecopy($data, $image, $w-$y, 0, 0, 0, $x, $h);
imagecopy($data, $image, 0, 0, $y, 0, $w-$x, $h);
imagegif($data, "test_".$move."-".$n.".gif");
}
}
else echo "Error";
}
?>
|
| |
|
|
|
|
|
|
|
для: alik
(26.05.2006 в 12:00)
| |
<?php
$img = "img.gif";
$step = 2; // на сколько пикселей смещаться
$im = imagecreatefromgif($img);
$sz = getimagesize($img);
$new = imagecreate($sz[0], $sz[1]);
$w = imagecolorallocate($new, 0xFF, 0xFF, 0xFF);
for ( $i = 0; $i < $sz[1]; $i += 2 ) {
imagecopy($new, $im, 1, 1, 1, -$i, $sz[0]-1, $sz[1]-1);
imagefill($new, 1, 1, $w);
imagegif($new, "img_".$i.".gif");
}
?>
|
| |
|
|
|
|