Skip to content
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

Include additional options from the gifsicle command line #42

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

xanderfrangos
Copy link

I've added the following options from the gifsicle command line:

  • lossy
  • colorMethod
  • ditherMethod
  • resize
  • resizeMethod
  • resizeColors

readme.md has also been updated to describe the new options.

@1000ch
Copy link
Member

1000ch commented May 24, 2020

@xanderfrangos
Hi, thank you for your contributions.
Would you add tests for those options?

@seahindeniz
Copy link

Hi @1000ch,

There are also not much of test cases for current options either 😕

Type: `string`\
Format: `widthxheight`

Resize the output GIF to the given width and height. If width or height is an underscore `_`, that dimension is chosen so that the aspect ratio remains unchanged.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more user-friendly to make this an object instead, like done in #39

Then the resize method and resize colors could be nested in this object.

##### lossy

Type: `number`\
Default: `20`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should document the accepted range.

Type: `string`\
Default: `diversity`

Determine how a smaller colormap is chosen. `diversity`, the default, is xv(1)’s diversity algorithm, which uses a strict subset of the existing colors and generally produces good results. `blend-diversity` is a modification of this: some color values are blended from groups of existing colors. `median-cut` is the median cut algorithm described by Heckbert.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you linkify some of the terms here so the user can quickly read more about the various methods?

Type: `string`\
Default: `floyd-steinberg`

Specify a dithering algorithm with the optional method argument. The default, `floyd-steinberg`, uses Floyd-Steinberg error diffusion. This usually looks best, but can cause animation artifacts, because dithering choices will vary from frame to frame. Gifsicle also supports ordered dithering algorithms that avoid animation artifacts. The `ro64` mode uses a large, random-looking pattern and generally produces good results. The `o3`, `o4`, and `o8` modes use smaller, more regular patterns. The `ordered` mode chooses a good ordered dithering algorithm. For special effects, try the halftone modes `halftone`, `squarehalftone`, and `diagonal`. Some modes take optional parameters using commas. The halftone modes take a cell size and a color limit: `halftone,10,3` creates 10-pixel wide halftone cells where each cell uses up to 3 colors.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Some modes"

Should document exactly which modes take arguments and what arguments they take.

I don't think halftone,10,3 is very user-friendly. {ditherMethod: ['halftone', 10, 3]} would probably be better.


Set the method used to resize images. The `sample` method runs very quickly, but when shrinking images, it produces noisy results. The `mix` method is somewhat slower, but produces better-looking results. The default method is currently `mix`.

Other methods include `sample`, `box`, `mix`, `catrom`, `mitchell`, `lanczos2`, `lanczos3`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you link to more info about these?

@xanderfrangos
Copy link
Author

@sindresorhus All of the provided descriptions come verbatim from the official Gifsicle manual. I unfortunately don't have any additional information than what's there.

The resize option could definitely be more user-friendly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants