fogleman / gg

Go Graphics - 2D rendering in Go with a simple API.
https://godoc.org/github.com/fogleman/gg
MIT License
4.4k stars 358 forks source link

Add SetScaleStyle for zoomed images #173

Open gonutz opened 2 years ago

gonutz commented 2 years ago

My use-case is to create an educational video where I want to explain an algorithm that works on images.

I would like to start the video by zooming into an image until we can see the pixels. However, in gg I get a blurry image when zooming in.

By default gg uses the draw package's BiLinear interpolation. This PR adds SetScaleStyle which I use to adjust the interpolation dynamically. While the image in my video is zoomed out, it is linearly interpolated. But once the zoom level is > 1, I switch to NearestNeighbor to show the pixels.

I have tried to keep this in line with the rest of the code, adding SetScaleStyle with a parameter and concrete SetScaleBiLinear etc. for easier auto-completion (if that is your reasoning, makes sense to me at least).