Out of the Sonic hacking community came RotSprite, a program for rotating and scaling pixel art without the blurring of bilinear filtering or the jaggedness of naive point sampling. But it was closed-source and Windows-only. So I decided to reimplement the algorithm in Python.
The result: Rotpixels.
I reimplemented the algorithm without some of the optional steps. I provided for rotation, scaling, and even pixel aspect ratio correction (so that your graphics drawn in the 1.143 PAR of NES can be correctly rotated within 1.143 PAR). It's very slow because Scale2x and edge detection are written in pure Python, and PIL's majority filtering is slow as well. But now that I have a working reference implementation as source code, I may rewrite it in C if there is interest.
The result: Rotpixels.
I reimplemented the algorithm without some of the optional steps. I provided for rotation, scaling, and even pixel aspect ratio correction (so that your graphics drawn in the 1.143 PAR of NES can be correctly rotated within 1.143 PAR). It's very slow because Scale2x and edge detection are written in pure Python, and PIL's majority filtering is slow as well. But now that I have a working reference implementation as source code, I may rewrite it in C if there is interest.