Что нового

Как создать из jpg картинок - gif анимацию

Пост номер 27 был отмечен как лучший ответ.

Автор
R

radioamator16

Чайник
Сообщения
36
Репутация
0
InnI
А без обновления - можно как-нибудь ?

(А то ведь после переустановки - половина других скриптов не будет работать.)
 

InnI

AutoIT Гуру
Сообщения
4 214
Репутация
1 114
radioamator16
А без обновления - можно как-нибудь ?
Можно. Нужно качать дополнительные UDF. А вот какие - зависит от установленной версии AutoIt. И, судя по вашим вопросам, это будет ещё одной проблемой ;)

после переустановки - половина других скриптов не будет работать
Кто вам такое сказал? У меня скрипты ещё на 3.3.8.1 написанные прекрасно работают. Ну, может, один раз имя UDF изменил... и всё.
 

Andrey_A

Чайник
Сообщения
104
Репутация
3
А можно попросить пример создания из png, gif, bmp анимированного gif с поддержкой прозрачности, все примеры которые есть создают gif с чёрным фоном вместо прозрачного... Или надо новую тему создавать?
Там есть функция _GDIPlus_BitmapConvertTo8Bit(), но так не удалось добиться нормального результата.
 
Автор
R

radioamator16

Чайник
Сообщения
36
Репутация
0
Установите последнюю версию AutoIt
Здравствуйте.
У меня теперь создается gif.файл - вашим скриптом.
Однако он - не зациклен, как обычно зацикливаются gif-файлы.
Сейчас просто идет смена картинок, а затем при показе последней картинки - gif останавливается.

Что поменять в макросе, чтобы gif - бесконечно прокручивался ?


Код:
#include "_GDIPlus_GIFAnim.au3" 

_GDIPlus_Startup()

Global $aImages[5] = [4]
For $i = 1 To 4
  $aImages[$i] = _GDIPlus_ImageLoadFromFile($i & ".jpg")
  If @error Then Exit MsgBox(0, _GDIPlus_Shutdown(), "Ошибка загрузки файла " & $i & ".jpg")

Next

_GDIPlus_GIFAnimCreateFile($aImages, "anim.gif", 1000)
If @error Then MsgBox(0, "Error", "Ошибка создания gif-файла")


For $i = 1 To 4
  _GDIPlus_ImageDispose($aImages[$i])
    Next
_GDIPlus_Shutdown()
 

InnI

AutoIT Гуру
Сообщения
4 214
Репутация
1 114
чтобы gif - бесконечно прокручивался
Нужно этот gif доработать напильником
Код:
$Name = "anim.gif"
$File = FileOpen($Name, 16 + 1)
FileSetPos($File, -1, 2)
If FileRead($File, 1) = 0x3B Then FileSetPos($File, -1, 2)
FileWrite($File, Binary("0x21FF0B4E45545343415045322E3003010000003B"))
FileClose($File)
 
Автор
R

radioamator16

Чайник
Сообщения
36
Репутация
0
InnI
добавил этот кусок кода, в основной код.

Весь код теперь выглядит так:
Код:
#include "_GDIPlus_GIFAnim.au3"

_GDIPlus_Startup()

Global $aImages[5] = [4]
For $i = 1 To 4
  $aImages[$i] = _GDIPlus_ImageLoadFromFile($i & ".jpg")
  If @error Then Exit MsgBox(0, _GDIPlus_Shutdown(), "Ошибка загрузки файла " & $i & ".jpg")

Next

_GDIPlus_GIFAnimCreateFile($aImages, "anim.gif", 1000)
If @error Then MsgBox(0, "Error", "Ошибка создания gif-файла")


For $i = 1 To 4
  _GDIPlus_ImageDispose($aImages[$i])
    Next
_GDIPlus_Shutdown()



$Name = "anim.gif"
$File = FileOpen($Name, 16 + 1)
FileSetPos($File, -1, 2)
If FileRead($File, 1) = 0x3B Then FileSetPos($File, -1, 2)
FileWrite($File, Binary("0x21FF0B4E45545343415045322E3003010000003B"))
FileClose($File)

По-прежнему не работает.
Gif - проигрывается до четвертой картинки, а потом останавливается.
Файл Gif - открываю в Internet Exploer.
 

InnI

AutoIT Гуру
Сообщения
4 214
Репутация
1 114
открываю в Internet Exploer
Тогда так
Код:
$Name = "anim.gif"
$File = FileOpen($Name, 16)
$Text = FileRead($File)
FileClose($File)
$Text = StringReplace($Text, "21F904", "21FF0B4E45545343415045322E30030100000021F904", 1)
If Not @extended Then Exit MsgBox(0, "Error", "Ошибка замены кода")
$File = FileOpen($Name, 16 + 2)
FileWrite($File, $Text)
FileClose($File)
 
Автор
R

radioamator16

Чайник
Сообщения
36
Репутация
0
InnI
А вот теперь все нормально.
Спасибо огромное.

Тема - решена.
 
Верх