Calculates a new size that fits inside the maximums while keeping the original aspect ratio.
Resize image.
Resize image. Partial gamma correction looks better on mips; set to 1.0 to disable gamma correction. Filter scale: values < 1.0 cause aliasing, but create sharper looking mips (0.75f, for example).
Get filter name. Will return null for invalid index.
Find filter index by name. Will use default filter for invalid names.
Default filter for image resampler.
Maximum image width/height for image resampler.
Number of known image resizer filters.
Note that this focuses more on quality than speed. You can tweak the filterScale argument to speed things up at the expense of quality though (lower number = faster).
I've found:
auto size = calculateSizeKeepingAspectRatio(i.width, i.height, maxWidth, maxHeight); if(size.width != i.width || size.height != i.height) { i = imageResize(i, size.width, size.height, null, 1.0, 0.6); }
Gives decent results balancing quality and speed. Compiling with ldc or gdc can also speed up your program.
Public Domain / Unlicense - http://unlicense.org/
Image resizing support for arsd.color.MemoryImage. Handles up and down scaling. See imageResize for the main function, all others are lower level if you need more control.