Skip to content

feat: add pixelate and pseudo-pixelate#469

Open
RobertMueller2 wants to merge 3 commits intoSatty-org:mainfrom
RobertMueller2:feat_pixelate
Open

feat: add pixelate and pseudo-pixelate#469
RobertMueller2 wants to merge 3 commits intoSatty-org:mainfrom
RobertMueller2:feat_pixelate

Conversation

@RobertMueller2
Copy link
Copy Markdown
Member

@RobertMueller2 RobertMueller2 commented Mar 27, 2026

Closes: #90

This implements a pixelate tool with two modes

  • regular mode with a normal block pixelation, this is, depending on selected area and image resolution, reversible
  • "independent mode" or pseudo-pixelate that takes data from outside the selected area and applies distance weighting. The original area is entirely overwritten by the interpolated data. Then, the regular pixelation creates a block-pixelate look from this.

Some things are still open:

  • figure out a better icon - help needed please
  • reach out to flameshot guys regarding credits
  • double check if south and east buffers aren't actually off by one
  • figure out if BLOCKSIZE is good at a value of 32. This may actually need to be adjustable.

Known limitations:

  • in pseudo-pixelate mode, canvas background may contribute to the mix of pixels if the selection is started at image origin
  • in idependent mode, if the selection "leaves" Satty's window, nothing happens. We would be lacking one fringe in that instance.

This PR was inspired by

Regarding the credits, the idea with taking "fringes" was taken from said PR, but I reimplemented the gist of it according to my understanding. I did, for example, skip any additional noise which might be suitable for adding later. Also, actually iterating the source (fringes) and target data (overwritten area) works a bit different due to the objects used. I don't think we need to talk about a separate licence for this bit, but we'll see what the flameshot guys say about this.

pixelation2.mp4

@RobertMueller2
Copy link
Copy Markdown
Member Author

RobertMueller2 commented Mar 27, 2026

for brighter images, the "independent mode" result is a bit too bright. Maybe the weighting math isn't great yet.

EDIT: need to divide everything by two if I have a a horizontal and a vertical influence, they each add to 1. that looks a lot better. Unfortunately, now I have to redo the recording.

@RobertMueller2
Copy link
Copy Markdown
Member Author

Perhaps we also really need to call this "pseudo-pixelate", no need to re-invent lingo? 😉

@RobertMueller2 RobertMueller2 changed the title feat: add pixelate and "independent" pixelate feat: add pixelate and pseudo-pixelate Mar 28, 2026
Closes: Satty-org#90

This implements a pixelate tool with two modes
- regular mode with a normal block pixelation, this is, depending on
  selected area and image resolution, reversible
- "independent mode" that takes data from outside the selected area, the
  area is entirely overwritten by this. Then, the regular pixelation
creates a block-pixelate look.

Some things are still open:
[ ] figure out a better icon - help needed please
[ ] reach out to flameshot guys regarding credits
[ ] figure out if BLOCKSIZE is good at a value of 32. This may actually need
to be adjustable.

Known limitations:
- in independent mode, canvas background may contribute to the mix of
  pixels if the selection is started at image origin
- in idependent mode, if the selection "leaves" Satty's window, nothing
happens. We would be lacking one fringe in that instance.

This PR was inspired by
- https://github.com/flameshot-org/flameshot/pull/3765/changes
- Satty-org#468 by kikeijuu (superseded by this PR)

Regarding the credits, the idea with taking "fringes" was taken from
said PR, but I reimplemented the gist of it according to my
understanding. I did, for example, skip any additional noise which
might be suitable for adding later. Also, actually iterating the source
and target data works a bit different due to the objects used. I don't
think we need to talk about a separate licence for this bit, but we'll
see what the flameshot guys say about this.
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.

[feature] low res pixel blur

1 participant