What happened to GIF?

Talk about anything
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

What happened to GIF?

24 Apr 2018, 06:57

This is more or less a follow up from another topic where I happened to ask an off-topic question which evolved. I wanted to know of a tool that could capture screen activity to animated GIF images, that could then be posted as feedback/presentation/whatever, but that would not suffer from a certain undesired effect. This undesired effect happens in one certain image viewing application, the most handy to me. So, here we go…
burque505 wrote:I use Screen2Gif, it's free, and updated often.
Drugwash wrote:[…] I've checked and it's still in a weird format that my Total Commander plug-in (Imagine by Chun Sejin) can't render correctly so that application is of no use to me (more so when my system doesn't meet its requirements) […]
burque505 wrote:[…] sorry that one didn't work, try Licecap (got this tip from BoBo). It's not as easy to use, but I bet it's more lightweight.
Drugwash wrote:Thank you, I had already tried a few capture applications some time ago, Licecap included, but they all create the same type of GIFs. Dunno what the problem may be but rendering is horrible, black areas all over the place.
tidbit wrote:the rendering issue is probably due to transparency. some programs have an option to only draw the different pixels between frames. so less pixels = smaller file size. […] also, it's probably an issue with your image viewer for not handling the transparency correctly. Or maybe sometimes the program screws up, not sure.
Thank you both. It definitely is a problem with Imagine since FastStone Image Viewer does render the respective animated GIFs correctly. However, years ago I had never encountered an animated GIF that would play erroneously even in older versions of the Imagine plug-in/application. Everything was just working. To me it's much easier to view an image in Total Commander's Lister (where Imagine kicks in) than in full-fledged FS Image Viewer, but this weird issue is quite disturbing. Oh and tidbit: I have tried with both transparency enabled and disabled in Licecap - no change whatsoever.

I've also noticed that large animations made by the same recent tools would sometimes drain all the system resources (RAM, page file and CPU) if open in the QtWeb browser which I've been using for some time instead of the much more resource-hungry Pale Moon stuffed with all kinds of extensions. On a single-core 1.8GHZ CPU with only 1.5GB of PC133 SDRAM the choice of applications is essential.

So, what the hell happened to the GIF format in the mean time? Can someone shed some light on this? And is there an older (XP-compatible, maybe Win9x-compatible too) tool that could capture screen areas and build old-style GIF animations - whatever that style may be?

As for AHK, it now has arrays, objects, classes and all kinds of bells and whistles but still - after 14 years of development! - cannot natively render an animated GIF in a GUI. Imagine :roll: that!

Here's a sample of such animation (browser will probably render it correctly):
test0.gif
test0.gif (29.48 KiB) Viewed 5638 times
and here's how a frame looks like in Imagine (all but first look like that):
test0_Frame_002.png
test0_Frame_002.png (2.74 KiB) Viewed 5638 times
Part of my AHK work can be found here.
burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: What happened to GIF?

24 Apr 2018, 11:20

:D Okay, not native, I guess, but ...
ActiveXAnimatedGif.gif
ActiveXAnimatedGif.gif (30.62 KiB) Viewed 5616 times
ActiveXAnimatedGif.zip
(28.56 KiB) Downloaded 125 times
User avatar
tidbit
Posts: 1272
Joined: 29 Sep 2013, 17:15
Location: USA

Re: What happened to GIF?

24 Apr 2018, 12:46

according to wiki, the latest official version is from 1989. https://en.wikipedia.org/wiki/GIF
so nothing has changed, unless people/devs/browsers/other are now following a non-official modded gif. Which is believable, 29 years is a looong time AND could also be true since Imagine was last updated almost a decade ago: 2009-09-28.

there's also many other light-weight image viewers, such as the very popular: https://www.irfanview.com/ (lightweight, addons for fancier things. simple UI, still being developed, since 1996).
rawr. fear me.
*poke*
Is it December 21, 2012 yet?
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

24 Apr 2018, 16:31

ActiveX is overkill and takes too long to load (on my machine, at least). Also, back in the 9x days it was considered a high risk and people avoided installing/using it. Good practice, in my opinion.

Imagine v1.1.0 was built in august 2017, unless the dates in the official zip are wrong. I'm referring to the wlx plug-in, mainly, although the exe should bear the same date and indeed checking its VersionInfo it says "Copyright (c) 2003-2017". Whatsnew.txt mentions:

Code: Select all

v1.1.0, Jul 31 2017
 - Fixed: Support for High-DPI awareness
 - Added: Command line parameter 'crop'
 - Added: Transparency for XPM

v1.0.9, Nov 20 2012
[…]
I tried IrfanView a couple times in the past and did not like it. Besides, a plug-in is usually much more responsive than an external application, not to mention the reflex of calling the Lister on any type of file rather than double-clicking to launch any associated application.

Question is: how come old animated GIFs that I have around display correctly in Imagine while those created by newer tools don't? Something must be different, it's only logical. Mr. Spock would agree.
Part of my AHK work can be found here.
User avatar
tidbit
Posts: 1272
Joined: 29 Sep 2013, 17:15
Location: USA

Re: What happened to GIF?

24 Apr 2018, 16:45

oh, I googled "Imagine picture viewer" which brought me here: https://sourceforge.net/projects/open-imagine/files/
probably not the same program?
But ya. times change, things change (seems like gif too, even though wiki says otherwise). Sometime in the future you might just have to upgrade, or just keep dealing with more and more things breaking and being limited to OS's that are less than 2 decades old. (Honestly i'm surprised at how much stuff still works on 95/98/xp)
rawr. fear me.
*poke*
Is it December 21, 2012 yet?
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

25 Apr 2018, 05:49

Yeah, I know the name "Imagine" is too common to be found easily, that's why I had already provided links to its homepage (as well as for FastStone Image Viewer, Total Commander and QtWeb) in first post, should anyone want to test. No,it's not the one at SourceForce.

I know how things work, standards are constantly being changed, and not out of necessity but more out of greed, the planned obsolescence that makes everything unusable in a very short period of time. Many things would still work in XP and lower if there were real programmers out there building those applications, not kiddies that were born in .NET and have no idea how to manipulate the bits in a byte to get eight boolean flags out of it.
Sorry, it always gets me started when it comes to this forcibly being pushed forwards - although I'm not sure that's the correct direction we're being pushed in.

Back to the issue. I've skimmed through information on a few web pages and stumbled into a whole lot of fuss. Couldn't find the real issue as of yet, except for a hunch that the missing Global Color Table may be the issue. Any assistance is welcome.
Part of my AHK work can be found here.
User avatar
derz00
Posts: 497
Joined: 02 Feb 2016, 17:54
Location: Middle of the round cube
Contact:

Re: What happened to GIF?

25 Apr 2018, 09:21

Hey Drugwash, interesting response. I am quite intrigued by your stubborn use of small hardware and old software. Not that it's wrong. It's just that, as you just implied, you're alone, and there aren't any programmers supporting these old versions of Windows, and you're going to run into issues like this and find only scanty assistance. (this lack of assistance and development is kind of what tidbit didn't like about using Linux, but I'd argue that that has improved) Really I think there's a chance you'd find common values with a lot of the Linux users/developers, which is a growing spectrum of people across the world. FWIW
try it and see
...
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

25 Apr 2018, 10:16

At some point I may get into the Linux subject because I have a lot of beef with that too, but for now I'll just stick with the issue at hand, which is certain GIF animations play poorly in a certain image viewer, and that happens under XP (for now). The viewer is still worked on albeit randomly.

So what I'd need assistance with is what features in the GIF format could drive a (buggy) viewer to display images that way. This requires fair knowledge of the GIF format. So far I have discovered that ill-behaving images do not have a Global Color Table block defined and enabled in the Logical Screen Descriptor, whereas the images that display correctly in the same viewer do have one. But I'm not sure this is the (only) problem.

If I'm to submit a bug report to the author of the image viewer I'd like to provide some useful information, not just "it doesn't work, fix it". It's only fair.

For comparison here's an animated GIF that renders almost correctly in Imagine:
Moving-picture-puppy-dog-barking-animated-gif.gif
Moving-picture-puppy-dog-barking-animated-gif.gif (21.35 KiB) Viewed 5526 times
I said "almost" because frames 30 and 31 do have some glitches which are not visible in FastStone Image Viewer:
Moving-picture-puppy-dog-barking-animated-gif_Frame_030.png
Moving-picture-puppy-dog-barking-animated-gif_Frame_030.png (785 Bytes) Viewed 5526 times
Moving-picture-puppy-dog-barking-animated-gif_Frame_031.png
Moving-picture-puppy-dog-barking-animated-gif_Frame_031.png (781 Bytes) Viewed 5526 times
Part of my AHK work can be found here.
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

25 Apr 2018, 11:59

And here's one animation that has no problems in Imagine:
7614-Tiger-Attacks-Elephant-Rider-Meme-Guy.gif
7614-Tiger-Attacks-Elephant-Rider-Meme-Guy.gif (460.69 KiB) Viewed 5525 times
All of the images above are GIF89a according to their header. So… what's the difference? Where's the bug? :?
Part of my AHK work can be found here.
User avatar
tidbit
Posts: 1272
Joined: 29 Sep 2013, 17:15
Location: USA

Re: What happened to GIF?

25 Apr 2018, 12:41

so I tried a gift recorded with licecap, from a browser game. irfanview works, your Imagine (which is actually pretty nice. been looking for a gif editor / frame viewer since I lost my old one) is.. buggy.
comparing the Image Information windows:
Image

note: I got Imagine_1.1.0_Unicode, portable. not the ANSI for old OS's. So it's probably not a version thing.
Maybe... for some reason, it's just Imagine (and probably some others) fault? poorly dev'd gif system or dependency? Nothing strayed from the standards, but just w/e they use for gif support was poorly designed and implemented.
rawr. fear me.
*poke*
Is it December 21, 2012 yet?
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

26 Apr 2018, 02:42

Thank you for testing and glad you found Imagine useful, it does indeed have a few handy functions.

Looking at the two info windows the only difference I see is that Imagine was able to count the unique colors (251) while IrfanView couldn't (Unknown).

I tried both the ANSI and the Unicode variants of 1.1.0 and also 1.0.9 which was installed before, they all exhibit the same faulty behavior. I already acknowledged the problem is in Imagine, but maybe it's not its fault directly - maybe the GIFs are badly built and Imagine just doesn't fix or ignore those issues. The two bad frames of the barking dog could indicate such behavior.

Already noticed an issue where images that do not contain a Global Color Table also have the number of colors in the GCT set to zero although the recommendations found around the web are to have that number present to assist in decoding. That's just one of the deviations from the standard that I noticed so far.

It's also possible for Imagine to behave erroneously when the above-mentioned Global Color Table is completely missing, although that block is marked as optional according to the standard. I need to dig through my collection for some old animated GIFs, see if I can find any that displays correctly even when the GCT is missing, which could rule out this assumption. The goal is to find out exactly where the problem lies, whether it's GIF creators' fault, Imagine's fault, or both.
Part of my AHK work can be found here.
Sam_
Posts: 146
Joined: 20 Mar 2014, 20:24

Re: What happened to GIF?

07 May 2018, 20:26

Here's a bit more detail:

Code: Select all

Path='C:\Programs\AutoHotkey Scripts\Gif\puppy.gif'
  I: OriginalFileSize=21865
  I: FileSize=21865
GIF loaded into memory in 0.000332 sec.
Header Block
  I: OffsetToHeader = 0
  I: Signature = 'GIF'
  I: Version = '89a'
  I: LengthOfHeader = 6
Logical Screen Descriptor
  I: OffsetToLogicalScreenDescriptor = 6
  I: CanvasWidth = 94
  I: CanvasHeight = 58
  I: GlobalColorTableFlag = 1
  I: ColorResolution = 4
  I: SortFlag = 0
  I: SizeOfGlobalColorTable = 3
  I: BackgroundColorIndex = 0
  I: PixelAspectRatio = 0
  I: LengthOfLogicalScreenDescriptor = 7
Global Color Table
  I: OffsetToGlobalColorTable = 13
  I: Palette = 
[0]
    [AA] => 0
    [BB] => 255
    [GG] => 255
    [RR] => 255

[1]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 51

[2]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[3]
    [AA] => 0
    [BB] => 183
    [GG] => 183
    [RR] => 183

[4]
    [AA] => 0
    [BB] => 0
    [GG] => 70
    [RR] => 150

[5]
    [AA] => 0
    [BB] => 150
    [GG] => 150
    [RR] => 150

[6]
    [AA] => 0
    [BB] => 102
    [GG] => 102
    [RR] => 255

[7]
    [AA] => 0
    [BB] => 187
    [GG] => 187
    [RR] => 187

[8]
    [AA] => 0
    [BB] => 0
    [GG] => 102
    [RR] => 0

[9]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[10]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[11]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[12]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[13]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[14]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0

[15]
    [AA] => 0
    [BB] => 0
    [GG] => 0
    [RR] => 0


  I: LengthOfGlobalColorTable = 48
Application Extension
  I: OffsetToApplicationExtension = 61
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 255
  I: BlockSize = 11
  I: ApplicationIdentifier = 'NETSCAPE'
  I: ApplicationAuthenticationCode = '2.0'
  I: SubBlockSize = 3
  I: Static = 1
  I: LoopCount = 32760
  I: LengthOfApplicationExtension = 18
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 80
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [1]
  I: OffsetToImageDescriptor = 88
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 0
  I: ImageWidth = 94
  I: ImageHeight = 58
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 98
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 704
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 802
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [2]
  I: OffsetToImageDescriptor = 810
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 2
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 820
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 675
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 1495
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [3]
  I: OffsetToImageDescriptor = 1503
  I: ImageSeparator = 44
  I: ImageLeft = 9
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 1513
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 669
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 2182
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [4]
  I: OffsetToImageDescriptor = 2190
  I: ImageSeparator = 44
  I: ImageLeft = 6
  I: ImageTop = 3
  I: ImageWidth = 78
  I: ImageHeight = 52
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 2200
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 665
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 2865
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [5]
  I: OffsetToImageDescriptor = 2873
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 84
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 2883
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 640
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 3523
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [6]
  I: OffsetToImageDescriptor = 3531
  I: ImageSeparator = 44
  I: ImageLeft = 9
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 3541
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 680
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 4221
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [7]
  I: OffsetToImageDescriptor = 4229
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 2
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 4239
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 675
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 4914
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [8]
  I: OffsetToImageDescriptor = 4922
  I: ImageSeparator = 44
  I: ImageLeft = 9
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 4932
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 680
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 5612
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [9]
  I: OffsetToImageDescriptor = 5620
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 84
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 5630
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 646
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 6276
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [10]
  I: OffsetToImageDescriptor = 6284
  I: ImageSeparator = 44
  I: ImageLeft = 7
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 6294
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 665
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 6959
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [11]
  I: OffsetToImageDescriptor = 6967
  I: ImageSeparator = 44
  I: ImageLeft = 8
  I: ImageTop = 2
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 6977
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 675
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 7652
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [12]
  I: OffsetToImageDescriptor = 7660
  I: ImageSeparator = 44
  I: ImageLeft = 6
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 7670
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 680
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 8350
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [13]
  I: OffsetToImageDescriptor = 8358
  I: ImageSeparator = 44
  I: ImageLeft = 4
  I: ImageTop = 3
  I: ImageWidth = 78
  I: ImageHeight = 52
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 8368
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 665
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 9033
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [14]
  I: OffsetToImageDescriptor = 9041
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 84
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 9051
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 646
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 9697
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [15]
  I: OffsetToImageDescriptor = 9705
  I: ImageSeparator = 44
  I: ImageLeft = 9
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 9715
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 673
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 10388
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [16]
  I: OffsetToImageDescriptor = 10396
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 84
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 10406
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 646
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 11052
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [17]
  I: OffsetToImageDescriptor = 11060
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 2
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 11070
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 674
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 11744
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [18]
  I: OffsetToImageDescriptor = 11752
  I: ImageSeparator = 44
  I: ImageLeft = 9
  I: ImageTop = 1
  I: ImageWidth = 75
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 11762
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 673
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 12435
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [19]
  I: OffsetToImageDescriptor = 12443
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 1
  I: ImageWidth = 74
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 12453
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 668
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 13121
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 20
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [20]
  I: OffsetToImageDescriptor = 13129
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 0
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 13139
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 658
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 13797
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [21]
  I: OffsetToImageDescriptor = 13805
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 0
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 13815
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 660
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 14475
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [22]
  I: OffsetToImageDescriptor = 14483
  I: ImageSeparator = 44
  I: ImageLeft = 8
  I: ImageTop = 1
  I: ImageWidth = 79
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 14493
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 714
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 15207
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [23]
  I: OffsetToImageDescriptor = 15215
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 91
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 15225
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 683
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 15908
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [24]
  I: OffsetToImageDescriptor = 15916
  I: ImageSeparator = 44
  I: ImageLeft = 4
  I: ImageTop = 1
  I: ImageWidth = 74
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 15926
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 666
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 16592
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [25]
  I: OffsetToImageDescriptor = 16600
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 0
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 16610
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 661
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 17271
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [26]
  I: OffsetToImageDescriptor = 17279
  I: ImageSeparator = 44
  I: ImageLeft = 12
  I: ImageTop = 0
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 17289
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 660
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 17949
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [27]
  I: OffsetToImageDescriptor = 17957
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 1
  I: ImageWidth = 79
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 17967
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 714
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 18681
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [28]
  I: OffsetToImageDescriptor = 18689
  I: ImageSeparator = 44
  I: ImageLeft = 0
  I: ImageTop = 3
  I: ImageWidth = 91
  I: ImageHeight = 50
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 18699
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 683
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 19382
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 10
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [29]
  I: OffsetToImageDescriptor = 19390
  I: ImageSeparator = 44
  I: ImageLeft = 10
  I: ImageTop = 1
  I: ImageWidth = 74
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 19400
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 668
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 20068
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 20
  I: TransparentColorIndex = 9
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [30]
  I: OffsetToImageDescriptor = 20076
  I: ImageSeparator = 44
  I: ImageLeft = 4
  I: ImageTop = 1
  I: ImageWidth = 74
  I: ImageHeight = 57
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 20086
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 666
Graphics Control Extension
  I: OffsetToGraphicsControlExtension = 20752
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 249
  I: BlockSize = 4
  I: Reserved1 = 0
  I: DisposalMethod = 2
  I: UserInputFlag = 0
  I: TransparentColorFlag = 1
  I: DelayTime = 20
  I: TransparentColorIndex = 15
  I: BlockTerminator = 0
  I: LengthOfGraphicsControlExtension = 8
Image Descriptor [31]
  I: OffsetToImageDescriptor = 20760
  I: ImageSeparator = 44
  I: ImageLeft = 12
  I: ImageTop = 0
  I: ImageWidth = 74
  I: ImageHeight = 56
  I: LocalColorTableFlag = 0
  I: InterlaceFlag = 0
  I: SortFlag = 0
  I: Reserved2 = 0
  I: SizeOfLocalColorTable = 0
  I: LengthOfImageDescriptor = 10
Image Data
  I: OffsetToImageData = 20770
  I: LZWMinimumCodeSize = 4
  I: LengthOfImageData = 661
Comment Extension
  I: OffsetToCommentExtension = 21431
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 254
  I: Comment = 'Réalisée par Lauranne, [email protected]
Copyrights 2001-2005'
  I: LengthOfCommentExtension = 70
Comment Extension
  I: OffsetToCommentExtension = 21501
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 254
  I: Comment = 'This animated GIF file was constructed using Ulead GIF Animator, visit us at http://www.ulead.com to find out more.USSPCMT'
  I: LengthOfCommentExtension = 127
Application Extension
  I: OffsetToApplicationExtension = 21628
  I: ExtensionIntroducer = 33
  I: ExtensionLabel = 255
  I: BlockSize = 11
  I: ApplicationIdentifier = 'PIANYGIF'
  I: ApplicationAuthenticationCode = '2.0'
  I: DataStream = 
[1] => 73
[2] => 109
[3] => 97
[4] => 103
[5] => 101
[6] => 1
[7] => 73
[8] => 109
[9] => 97
[10] => 103
[11] => 101
[12] => 1
[13] => 73
[14] => 109
[15] => 97
[16] => 103
[17] => 101
[18] => 1
[19] => 73
[20] => 109
[21] => 97
[22] => 103
[23] => 101
[24] => 1
[25] => 73
[26] => 109
[27] => 97
[28] => 103
[29] => 101
[30] => 1
[31] => 73
[32] => 109
[33] => 97
[34] => 103
[35] => 101
[36] => 1
[37] => 73
[38] => 109
[39] => 97
[40] => 103
[41] => 101
[42] => 1
[43] => 73
[44] => 109
[45] => 97
[46] => 103
[47] => 101
[48] => 1
[49] => 73
[50] => 109
[51] => 97
[52] => 103
[53] => 101
[54] => 1
[55] => 73
[56] => 109
[57] => 97
[58] => 103
[59] => 101
[60] => 1
[61] => 73
[62] => 109
[63] => 97
[64] => 103
[65] => 101
[66] => 1
[67] => 73
[68] => 109
[69] => 97
[70] => 103
[71] => 101
[72] => 1
[73] => 73
[74] => 109
[75] => 97
[76] => 103
[77] => 101
[78] => 1
[79] => 73
[80] => 109
[81] => 97
[82] => 103
[83] => 101
[84] => 1
[85] => 73
[86] => 109
[87] => 97
[88] => 103
[89] => 101
[90] => 1
[91] => 73
[92] => 109
[93] => 97
[94] => 103
[95] => 101
[96] => 1
[97] => 73
[98] => 109
[99] => 97
[100] => 103
[101] => 101
[102] => 1
[103] => 73
[104] => 109
[105] => 97
[106] => 103
[107] => 101
[108] => 1
[109] => 73
[110] => 109
[111] => 97
[112] => 103
[113] => 101
[114] => 1
[115] => 73
[116] => 109
[117] => 97
[118] => 103
[119] => 101
[120] => 1
[121] => 73
[122] => 109
[123] => 97
[124] => 103
[125] => 101
[126] => 1
[127] => 73
[128] => 109
[129] => 97
[130] => 103
[131] => 101
[132] => 1
[133] => 73
[134] => 109
[135] => 97
[136] => 103
[137] => 101
[138] => 1
[139] => 73
[140] => 109
[141] => 97
[142] => 103
[143] => 101
[144] => 1
[145] => 73
[146] => 109
[147] => 97
[148] => 103
[149] => 101
[150] => 1
[151] => 73
[152] => 109
[153] => 97
[154] => 103
[155] => 101
[156] => 1
[157] => 73
[158] => 109
[159] => 97
[160] => 103
[161] => 101
[162] => 1
[163] => 73
[164] => 109
[165] => 97
[166] => 103
[167] => 101
[168] => 1
[169] => 73
[170] => 109
[171] => 97
[172] => 103
[173] => 101
[174] => 1
[175] => 67
[176] => 111
[177] => 112
[178] => 121
[179] => 32
[180] => 111
[181] => 102
[182] => 32
[183] => 73
[184] => 109
[185] => 97
[186] => 103
[187] => 101
[188] => 1
[189] => 73
[190] => 109
[191] => 97
[192] => 103
[193] => 101
[194] => 1
[195] => 67
[196] => 111
[197] => 109
[198] => 109
[199] => 101
[200] => 110
[201] => 116
[202] => 1
[203] => 80
[204] => 101
[205] => 114
[206] => 115
[207] => 111
[208] => 110
[209] => 97
[210] => 108
[211] => 32
[212] => 67
[213] => 111
[214] => 109
[215] => 109
[216] => 101
[217] => 110
[218] => 116
[219] => 1
[220] => 0

  I: LengthOfApplicationExtension = 236
EoF
User avatar
jeeswg
Posts: 6902
Joined: 19 Dec 2016, 01:58
Location: UK

Re: What happened to GIF?

07 May 2018, 21:20

- @Sam_: I'd been interested in converting bmp to png, a png with exactly the same format as MS Paint's png, in case you knew of a way to do this. (Otherwise I can automate MS Paint (Windows XP) to open and save.)
- (Note: I just tested and it seems that the png format is the same for Windows XP and Windows 7.)
- Btw which tools are you using here? Thanks.
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

08 May 2018, 04:25

Thank you, Sam_, the disassembly should prove useful for analyzing whatever could possibly be wrong (or different) that makes Imagine behave erroneously.
I'd be interested too in the specific tool you used for the disassembly, if it's freeware or open-source. Of course, an AHK script could do that too but building it would take some time.

Strangely enough I only found one single reference to the PIANYGIF tag in my searches (maybe the Duck's fault) on this page. Unfortunately it's in Russian and that's one language I haven't had a chance to learn. Won't go anywhere near Google or Bing translators, and Yandex won't let me copy the translated contents complete with HTML tags.

@ jeeswg: Imagine can convert a batch of images, see Tools > Batch convert. It may even provide command-line options but I'm not sure of that.
Part of my AHK work can be found here.
Sam_
Posts: 146
Joined: 20 Mar 2014, 20:24

Re: What happened to GIF?

09 May 2018, 21:17

That was output from the class I am writing to construct, deconstruct, and manipulate GIFs (written in AHK). I'm pretty sure I've worked out the kinks in my LZW implementation, but the compression is considerably slower than I would like. It seems I have chosen a poor hashing strategy... I'll post more on that in the other thread when I have more time. On a side note, do you know any viewers that actually render the "Plain Text Extension"? I think I've implemented decent default parameters if they aren't explicitly given when adding the extension , but without actually being able to test it it is hard to be sure.

About PNG, I have never extensively looked into the details of the format. From what I gather, the compression used in PNG is significantly more complex than GIF's LZW or BMP's RLE, and writing a "good" PNG compressor is quite computationally intensive, even for an optimized and compiled program. I have used zopfliPNG via command line with PNGs a fair bit. When exporting frames/images to PNG from another format, including GIF, I just use GDIPlus.
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: What happened to GIF?

10 May 2018, 11:16

Thanks for the link, I found new things there.

I had no idea GIF could render text until these days while searching for information. So far I don't think I have any image that contains text blocks so can't check the viewers, but either way I don't have anything else besides Imagine and FS Image Viewer.
As for GIF-creating applications… I have yet to find a decent one.

For deconstructing (only), gdiplus should be the easiest way. Not for playing/rendering though. I've just tested the script made by tic and modified by tmplinshi from one of the links in your thread and it's lagging badly with large images, sometimes the lag may be larger than the frame delay itself.

AHK is not suitable for speed-critical operations such as encoding/decoding, encrypting/decrypting, hashing etc. unless those operations are performed inline by an assembler routine or by an external function library. For example, years ago in MyDiary I wanted to implement some sort of empirical encryption and settled for bit rotation; it was all AHK and it did work acceptably for very small databases, but when those grew in size the decryption/encryption would take minutes - completely unacceptable. So I had to build a couple of assembler subroutines that would perform the operations in one go, and call them from the AHK code. Time went down to a few seconds for a 1.5MB database. If I used the crypto API it probably would've taken less but I haven't checked that.
Part of my AHK work can be found here.

Return to “Off-topic Discussion”

Who is online

Users browsing this forum: Esaqzprak and 36 guests