Giter VIP home page Giter VIP logo

gif-image's Introduction

What it is:
- collection of procedures to manipulate GIFs
- extract still images, metadata, recombine

Status: 
Complete! Could submit to PLaneT, but probably not worth it considering the low expected demand.

Description:

There's plenty of "make animated GIF" apps around, but none that let you split an existing animated GIF up, play around with it and then reassemble it. This could be something vaguely useful and fun.

This was originally intended to be a moderately challenging project for getting to grips with Objective-C and an image format. But after a few hours work in Obj-C, I realised that not knowing the GIF spec was the bigger problem, so I decided to tackle this in Racket first. Racket already includes good procedures for creating GIFs (the file/gif module) but none for taking them apart. So this is something new.

Racket code files:

<x>-test :- unit tests for <x>
bits-and-bytes :- simple conversion
lookit :- print all bytes for debugging
info.rkt :- links to manual.html
gif-basics :- predicates, size-calculators and other utilities
gif-decompose :- exposed API

Other files:
images/ :- sample images for testing
spec-gif89a.txt :- Graphics Interchange Format specification
comparison.xlsx :- spreadsheet comparing input and output byte-for-byte
manual.html :- Documentation for this Racket module
manual.scrbl :- Scribble code for manual.html
*.css, *.js :- Supporting code for manual.html

[KEYWORDS: racket, functional, scribble, gif, images]

gif-image's People

Contributors

cbowdon avatar lehitoskin avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

lehitoskin std46

gif-image's Issues

Determining GIF optimization

There doesn't seem to be a way to determine whether a GIF has been optimized such that the first frame is used as a backdrop and the subsequent frames' data has been stripped away (and replaced with transparency) until only the parts that are different from the backdrop are kept. Some gifs appear just fine when using gif-image, yet so many more are optimized like this and I can't tell when to use the first frame as a backdrop or replace each frame with the next.

tl;dr Feature request - determine whether a GIF has been optimized

Library Update

@cbowdon I am interested in using this library for my own program, except it's kind of geared for the old PLaneT packaging system. I was going to do a reorganizing of the files and so forth to make it compatible with PLaneT2, perhaps even make some code changes if I find something that is different in the current version of Racket. That being said, I could make one really big PR, or if you're not interested in maintaining this library anymore I could become the active maintainer in your stead.

On another note, I don't seem to see any sort of license disclaimer anywhere in your source. Is there one in particular you'd like to have applied to this library?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.