Что нового

Определить колличество кадров в изображении gif

asdf8

Скриптер
Сообщения
564
Репутация
152
Есть функция:

Код:
Func FrameGIF($sFile)
	If FileExists($sFile) = 0 Then Return -1
	Local $read = FileRead($sFile), $a
	Local $_ani_Separator = Chr(0x21) & Chr(0xF9) & Chr(0x04)
	Switch StringLeft($read, 6)
		Case 'GIF89a'
			$a = StringSplit($read, $_ani_Separator, 1)
			If IsArray($a) And $a[0]>1 Then
				If $a[0]>1 Then
					Return $a[0]-1
				Else
					Return 1
				EndIf
			EndIf
		Case 'GIF87a'
			
		Case Else
			Return -1
	EndSwitch
EndFunc


но она не работает для формата GIF87a
Может кто знает, как ее сделать универсальной?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
asdf8
но она не работает для формата GIF87a
Потому что GIF87a не поддерживает анимацию. Это первый вариант формата.
GIF89a это модификация формата GIF87a, который поддерживает анимацию и прозрачность.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
[?]
Цитата сказал(а):
GIF87a не поддерживает анимацию
судя по ссылке от SECTOR все-таки поддерживает и разделитель фреймов там chr(44), но он какой-то не характерный.
В общем не выходит у меня ... каменный цветок.

А задача то - разделить анимированные гифы от обычных, может можно как-то проще?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
asdf8 сказал(а):
судя по ссылке от SECTOR все-таки поддерживает и разделитель фреймов там chr(44), но он какой-то не характерный.

87a поддерживает только чередование (постепенный вывод одного изображения с разным качеством), анимация и прозрачность была введена только в 89a.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Раз так, тогда вопрос решен.
Спасибо всем.
 
Верх