By Hannes Marais and Tom Rodeheffer
Dr. Dobb's Journal January 1999
Initialize the differential to 1/scale; Initialize the accumulated_differential to 0; Get the first original pixel; Do Copy original_pixel to next_resized_pixel; if (int)(accumulated_differential + differential) > (int)accumulated_differential then Get next original pixel; accumulated_differential += differential; while there are unprocessed original pixels.
Example 1: Original algorithm.
Copyright © 1999, Dr. Dobb's Journal