Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сдвинуть рисунок?
 
 автор: alik   (25.05.2006 в 18:48)   письмо автору
 
 

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

   
 
 автор: Саня   (25.05.2006 в 21:46)   письмо автору
 
   для: alik   (25.05.2006 в 18:48)
 

Думаю GDlib тут вам не подойдёт. Он не умеет работать с анимацией. А почему бы не сделать это ручками в специализированной проге?

   
 
 автор: alik   (26.05.2006 в 09:47)   письмо автору
 
   для: Саня   (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($image0));

function 
imageMove($image$int)
{
  
$w imagesx($image);
  
$h imagesy($image);
  
$data imagecreate($w$h);
  if (
$int)
  {
    for (
$y 0$y $h$y++)
    {
      
imagecopy($data$image0$y0$h $y 1$w1);
    }
  }
  else
  {
    for (
$x 0$x $w$x++)
    {
      
imagecopy($data$image$x0$w-$x-101$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 в 12:00)   письмо автору
 
   для: alik   (26.05.2006 в 09:47)
 

люди ну помогите пожалуйста, очень прошу.

   
 
 автор: alik   (26.05.2006 в 13:29)   письмо автору
 
   для: 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$image0$h-$y00$w$x);
        
imagecopy($data$image000$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$image0$h-$y00$w$x);
        
imagecopy($data$image000$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-$y000$x$h);
        
imagecopy($data$image00$y0$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-$y000$x$h);
        
imagecopy($data$image00$y0$w-$x$h);
        
imagegif($data"test_".$move."-".$n.".gif");
      }
 }
 else echo 
"Error";
}
?>

   
 
 автор: Саня   (26.05.2006 в 13:47)   письмо автору
 
   для: 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($new0xFF0xFF0xFF);
for ( 
$i 0$i $sz[1]; $i += ) {
  
imagecopy($new$im111, -$i$sz[0]-1$sz[1]-1);
  
imagefill($new11$w);
  
imagegif($new"img_".$i.".gif");
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования