How do I generate a list of lines to draw if I have pixel data for an image, so I don't have to draw every pixel? Any language will do, although I listed what I have a working knowledge for. C is ok as well. There was a limit to how many tags I could choose. Also, you can just point me toward an algorithm.
You are looking for a "raster to vector" algorithm.  The term comes from early graphics display systems, that used a CRT (cathode ray tube) for the display itself.  There were 2 approaches to displaying graphics: "raster" was the scan of a series of lines left to right, top to bottom, each line made up of on/off pixels. The controller of the CRT's electron gun simply scanned the same pattern over and over, just varying the intensity of the electron beam.  On a "vector" display, the electron gun could draw a straight line between any two points - no aliasing, no pixelation, just a pure straight line.  Vector displays were capable of higher resolution, but were limited by the number of lines they could draw - if a drawing had too many lines, then the display would begin to flicker as the time it would take to redraw the picture (to refresh the phosphors of the CRT) would take longer than the persistence of the CRT's phosphor surface.  Raster displays were simpler to control, had much less flicker, but lower resolution.
transforming an image into an array of lines to draw