Analyzing the image scaling algorithms implemented in other libraries.
python3 test-resize.py input/radial.rgb.png
# ResampleScope
./resamplescope.shSee output/ directory.
Notes
- The 8x versions are used for comparison.
| Pillow | libvips |
|---|---|
![]() |
![]() |
| Identical to Pillow |
| Pillow | libvips |
|---|---|
![]() |
![]() |
| Almost identical to Pillow¹ |
| Pillow | libvips |
|---|---|
![]() |
![]() |
| Almost identical to Pillow¹ |
¹ Pillow is considering pixels outside the image as not exist, while libvips is expanding the edge pixels outside the image. These different ways of edge handling are probably fine.
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |
| ImageMagick | libvips |
|---|---|
![]() |
![]() |
| Identical to ImageMagick |





















