Skip to content

kristianlm/chicken-stb-image-resize

Repository files navigation

stb-image-resize

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.

API

[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 of box, triangle, cubicbspline, catmullrom or mitchell. The default uses catmullrom for up-sampling and mitchell for down-sampling.
  • region: a vector of 4 elements s0 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.

Examples

You can try example-thumbnail.scm like this:

screenshot of running example-thumbnail.scm

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)

About

Resize raw images in CHICKEN Scheme

Resources

Stars

Watchers

Forks

Packages

No packages published