Last night I came back to this idea and kicked it around a bit in my head. I did a little research and I think the concept is sound, there are plenty of photo-to-ASCII converters out there, many written in Java or C. So I decided to give it a shot and created a github repo for the project in case anyone else feels like working on it with me, or simply wants to look at the code later. Here's a link to the github repo, which by the way, they offer free to students with a .edu email address.
I'm writing it in Java and my plan is to start simple:
1) Break an image into blocks of pixels. I'm starting out by assuming the picture will end up being 80 characters across in ASCII, so I'm dividing the image width by 80 to find the width of each block of pixels. I haven't settled on a formula for height, so I'm using height/80 to keep it proportional. The dimension formula needs work but I'll come back to this, maybe let the user decide?
2) For each block, find the average brightness by iterating over the pixels, getting their RGB values, and dividing by 3 to effectively convert it to greyscale. Add all the greyscale values together and divide by the number of pixels in the block to get an average for the entire block. Use that number to select a character with a relatively similar brightness from a list of ~10-20 characters.
So far I can break the image into blocks, and I have the average brightness for each block. I hope to convert that brightness to a character today and maybe get a messy working version going by the end of the weekend. I'd like to have a half decent working version before summer term starts and I get lost in homework.
I'm trying to learn how to use github and practice working with others, so I'd like to invite anyone/everyone to offer suggestions or contribute to the code. I'll post back here when/if I reach any milestones and keep the thread updated.