New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lossy #16

Closed
wants to merge 4 commits into
base: master
from

Conversation

Projects
None yet
@kornelski
Contributor

kornelski commented Mar 29, 2014

--lossy option that allows inexact match against LZW dictionary, which improves compression ratio. Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code, because the lossy search function needs to use less optimized code (ignores imageline), although this probably could be refactored a bit.

edit: fixed transparency

The results are pretty good:

3.3MB original

fat smooth anim

1.25MB lossy

noisy small anim

@kohler

This comment has been minimized.

Show comment
Hide comment
@kohler

kohler Apr 4, 2014

Owner

I am really psyched for these contributions! It may take me another week or so to go through them in depth, but wanted to confirm I've seen them.

Owner

kohler commented Apr 4, 2014

I am really psyched for these contributions! It may take me another week or so to go through them in depth, but wanted to confirm I've seen them.

Show outdated Hide outdated src/gifwrite.c Outdated
@kornelski

This comment has been minimized.

Show comment
Hide comment
@kornelski

kornelski Apr 30, 2014

Contributor

I've been using it for a while and I think the implementation is solid.

Contributor

kornelski commented Apr 30, 2014

I've been using it for a while and I think the implementation is solid.

@iirelu

This comment has been minimized.

Show comment
Hide comment
@iirelu

iirelu May 25, 2014

When will this be merged? It's extremely powerful and halves the sizes of my gifs.

iirelu commented May 25, 2014

When will this be merged? It's extremely powerful and halves the sizes of my gifs.

@vvo

This comment has been minimized.

Show comment
Hide comment
@vvo

vvo Oct 18, 2014

@kohler Can you review this again? Extremely usefull! @pornel

vvo commented Oct 18, 2014

@kohler Can you review this again? Extremely usefull! @pornel

@kornelski

This comment has been minimized.

Show comment
Hide comment
@kornelski

kornelski Oct 19, 2014

Contributor

I've noticed there's lossy branch in the gifsicle project, so @kohler is working on it :)

I know at least ezgif.com and compressor.io are using the lossy code in production and I haven't heard any complaints, so I presume it's pretty stable.

Contributor

kornelski commented Oct 19, 2014

I've noticed there's lossy branch in the gifsicle project, so @kohler is working on it :)

I know at least ezgif.com and compressor.io are using the lossy code in production and I haven't heard any complaints, so I presume it's pretty stable.

@nunofgs

This comment has been minimized.

Show comment
Hide comment
@nunofgs

nunofgs Dec 9, 2014

@kohler any news on this PR? :)

nunofgs commented Dec 9, 2014

@kohler any news on this PR? :)

@ryanmjacobs

This comment has been minimized.

Show comment
Hide comment
@ryanmjacobs

ryanmjacobs Dec 18, 2014

@kohler merge this please, it's very useful. 😄

ryanmjacobs commented Dec 18, 2014

@kohler merge this please, it's very useful. 😄

@ggamel

This comment has been minimized.

Show comment
Hide comment
@ggamel

ggamel Dec 24, 2014

👍 Looking forward to lossy gifs. Hoping it can be merged soon!

ggamel commented Dec 24, 2014

👍 Looking forward to lossy gifs. Hoping it can be merged soon!

@alanhamlett

This comment has been minimized.

Show comment
Hide comment
@alanhamlett

alanhamlett Feb 2, 2015

Merge this please!

alanhamlett commented Feb 2, 2015

Merge this please!

@masom

This comment has been minimized.

Show comment
Hide comment
@masom

masom Mar 9, 2015

Any progress on this issue? We are using the lossy fork but we would prefer to be using the official upstream.

masom commented Mar 9, 2015

Any progress on this issue? We are using the lossy fork but we would prefer to be using the official upstream.

@kornelski

This comment has been minimized.

Show comment
Hide comment
@kornelski

kornelski Sep 29, 2015

Contributor

FYI I'm tweaking that branch to separate the compression function into lossy and non-lossy versions, as we've discussed over email.

Contributor

kornelski commented Sep 29, 2015

FYI I'm tweaking that branch to separate the compression function into lossy and non-lossy versions, as we've discussed over email.

@vvo

This comment has been minimized.

Show comment
Hide comment
@vvo

vvo Feb 6, 2016

Any news @pornel on getting this merged? Thanks

vvo commented Feb 6, 2016

Any news @pornel on getting this merged? Thanks

@andreyvit

This comment has been minimized.

Show comment
Hide comment
@andreyvit

andreyvit Feb 8, 2016

+1 for merging this. Pretty please?

andreyvit commented Feb 8, 2016

+1 for merging this. Pretty please?

@kornelski

This comment has been minimized.

Show comment
Hide comment
@kornelski

kornelski Feb 8, 2016

Contributor

If someone wants to help, there's a merge conflict that needs to be resolved.

Contributor

kornelski commented Feb 8, 2016

If someone wants to help, there's a merge conflict that needs to be resolved.

@shinnn shinnn referenced this pull request Jul 17, 2016

Closed

giflossy #62

denji pushed a commit to denji/gifsicle that referenced this pull request Jul 17, 2016

Implement --lossy LZW compression
--lossy option that allows inexact match against LZW dictionary,
which improves compression ratio.
Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code,
because the lossy search function needs to use less optimized code (ignores imageline),
although this probably could be refactored a bit.

The results are pretty good:
* Original: 3.3MB
* Lossy: 1.25MB

Based on gifsicle which implements lossy LZW compression.
It can reduce animgif file sizes by 30%—50% at a cost of some dithering/noise.
* https://pornel.net/lossygif
* https://github.com/pornel/giflossy

Closed: kohler#16

denji pushed a commit to denji/gifsicle that referenced this pull request Jul 17, 2016

Implement --lossy LZW compression
--lossy option that allows inexact match against LZW dictionary,
which improves compression ratio.
Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code,
because the lossy search function needs to use less optimized code (ignores imageline),
although this probably could be refactored a bit.

The results are pretty good:
— Original: 3.3MB
— Lossy: 1.25MB

Based on gifsicle which implements lossy LZW compression.
It can reduce animgif file sizes by 30%—50% at a cost of some dithering/noise.
— https://pornel.net/lossygifhttps://github.com/pornel/giflossy

Closed: kohler#16

denji pushed a commit to denji/gifsicle that referenced this pull request Jul 17, 2016

Implement --lossy LZW compression
--lossy option that allows inexact match against LZW dictionary,
which improves compression ratio.
Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code,
because the lossy search function needs to use less optimized code (ignores imageline),
although this probably could be refactored a bit.

The results are pretty good:
— Original: 3.3MB
— Lossy: 1.25MB

Based on gifsicle which implements lossy LZW compression.
It can reduce animgif file sizes by 30%—50% at a cost of some dithering/noise.
— https://pornel.net/lossygifhttps://github.com/pornel/giflossy

Closed: kohler#16

denji added a commit to denji/gifsicle that referenced this pull request Sep 9, 2016

Implement --lossy LZW compression
--lossy option that allows inexact match against LZW dictionary,
which improves compression ratio.
Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code,
because the lossy search function needs to use less optimized code (ignores imageline),
although this probably could be refactored a bit.

The results are pretty good:
— Original: 3.3MB
— Lossy: 1.25MB

Based on gifsicle which implements lossy LZW compression.
It can reduce animgif file sizes by 30%—50% at a cost of some dithering/noise.
— https://pornel.net/lossygifhttps://github.com/pornel/giflossy

Closed: kohler#16

kornelski added some commits Jul 17, 2016

Implement --lossy LZW compression
--lossy option that allows inexact match against LZW dictionary,
which improves compression ratio.
Lossy matching does a bit of 1-dimensional dithering.

This is a very basic implementation that does recursive search of dictionary nodes.

write_compressed_data contains some duplicated code,
because the lossy search function needs to use less optimized code (ignores imageline),
although this probably could be refactored a bit.

The results are pretty good:
— Original: 3.3MB
— Lossy: 1.25MB

Based on gifsicle which implements lossy LZW compression.
It can reduce animgif file sizes by 30%—50% at a cost of some dithering/noise.
— https://pornel.net/lossygifhttps://github.com/pornel/giflossy

Closed: #16
@saurabheights

This comment has been minimized.

Show comment
Hide comment
@saurabheights

saurabheights Apr 18, 2017

@pornel @kohler : Currently, any changes/fixes made in kohler/gifsicle are not pulled into lossy pornel repo. Thus, getting this PR merged would reduce such issues.

I tried looking into the merge issue but didn't properly understand. There are two PR #16(this one) and #72. Also, I see denji:lossy-kornel, pornel:lossy, kohler:lossy branches. It's quite perplexing to understand which one needs resolution. If you could inform which branch needs the fix, I would be glad to get this merged.

Also, there has been some conversation between kohler and pornel. If anything of relevance I should know, it would help.

saurabheights commented Apr 18, 2017

@pornel @kohler : Currently, any changes/fixes made in kohler/gifsicle are not pulled into lossy pornel repo. Thus, getting this PR merged would reduce such issues.

I tried looking into the merge issue but didn't properly understand. There are two PR #16(this one) and #72. Also, I see denji:lossy-kornel, pornel:lossy, kohler:lossy branches. It's quite perplexing to understand which one needs resolution. If you could inform which branch needs the fix, I would be glad to get this merged.

Also, there has been some conversation between kohler and pornel. If anything of relevance I should know, it would help.

@kornelski

This comment has been minimized.

Show comment
Hide comment
@kornelski

kornelski Sep 16, 2017

Contributor

Having a pull request stuck in limbo for 3 years is disheartening. I'm giving up on contributing.

If anyone wants it, it's merged into my fork: https://github.com/pornel/giflossy

Contributor

kornelski commented Sep 16, 2017

Having a pull request stuck in limbo for 3 years is disheartening. I'm giving up on contributing.

If anyone wants it, it's merged into my fork: https://github.com/pornel/giflossy

@kornelski kornelski closed this Sep 16, 2017

@vvo

This comment has been minimized.

Show comment
Hide comment
@vvo

vvo Sep 18, 2017

I am really psyched for these contributions! It may take me another week or so to go through them in depth, but wanted to confirm I've seen them.

@kohler and @pornel Thanks both for great contributions. It's very hard to play the open source game but both gifiscle and giflossy are great! Everyone wants them to merge so we can remove any specifics in readmes explaining how to install giflossy/gisicle and the differences.

I hope @kohler you can give some more help and finally make the tedious work of merging the changes. Thanks ..

vvo commented Sep 18, 2017

I am really psyched for these contributions! It may take me another week or so to go through them in depth, but wanted to confirm I've seen them.

@kohler and @pornel Thanks both for great contributions. It's very hard to play the open source game but both gifiscle and giflossy are great! Everyone wants them to merge so we can remove any specifics in readmes explaining how to install giflossy/gisicle and the differences.

I hope @kohler you can give some more help and finally make the tedious work of merging the changes. Thanks ..

@seefood

This comment has been minimized.

Show comment
Hide comment
@seefood

seefood Nov 19, 2017

Another +1 for this PR. 3 years is a ridiculous amount of time. @kohler Can you at least clue us in to the reason for the holdup?

seefood commented Nov 19, 2017

Another +1 for this PR. 3 years is a ridiculous amount of time. @kohler Can you at least clue us in to the reason for the holdup?

@fatso83

This comment has been minimized.

Show comment
Hide comment
@fatso83

fatso83 Jan 30, 2018

Oh, well, no need to get antsy about this not getting merged. Giflossy is the new gifsicle anyway.

fatso83 commented Jan 30, 2018

Oh, well, no need to get antsy about this not getting merged. Giflossy is the new gifsicle anyway.

@seefood

This comment has been minimized.

Show comment
Hide comment
@seefood

seefood Feb 1, 2018

Sadly not when you apt install gifsicle. Yet.

seefood commented Feb 1, 2018

Sadly not when you apt install gifsicle. Yet.

@gingerbeardman

This comment has been minimized.

Show comment
Hide comment
@gingerbeardman

gingerbeardman Mar 21, 2018

Really poor form not merging this @kohler - what's up with that?

gingerbeardman commented Mar 21, 2018

Really poor form not merging this @kohler - what's up with that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment