This is a CHICKEN egg that wraps stb_image_resize.h version 0.95 from Jorge L Rodriguez and friends. It works on CHICKEN 4 and 5.
[procedure] (image-resize pixels width height channels target-width target-height #!key filter region alpha-channel)
Takes in raw pixels (a srfi-4 u8/u16/u32/f32vector) of size
widthheightchannels and returns raw pixels after resizing. The
returned type is the same as pixels' of size
target-widthtarget-heightchannels.
channels must be an integer between 0 and 64 and keys are processed
as follows.
filter:one ofbox,triangle,cubicbspline,catmullromormitchell. The default usescatmullromfor up-sampling andmitchellfor down-sampling.region:a vector of 4 elementss0 t0 s1 t1, representing the UV-coordinates to use as source image. This can be used to crop the image. These values must be in the range of[0, 1]and represent the fraction of the input image.#(0 0 0.5 1), for example, cuts off the right half of the image.alpha-channel:index of channel which is the alpha channel in the image. supply#f(default) for no alpha channel.
You can try example-thumbnail.scm like this:
Or turn a 3x1 greyscale image into a single pixel like this:
$ csi -R srfi-4 -R stb-image-resize -p '(image-resize (f32vector 0 4 8) 3 1 1 1 1)'
#f32(4.0)
