Your error is in the conversion process. ASCII.ToString does not convert binary data into text - it creates a string that contains binary data. For that, you need an encoding algorithm such as UUEncode or Base64.
The Convert class has simple Base64 conversion methods. So once you have your byte array from the image, perform
string text = Convert.ToBase64String(data)
and to go the other way
byte[] data = Convert.FromBase64String(text)
You can then read/write the file with ASCII encoding by opening a StreamReader or StreamWriter with the Encoding.ASCII parameter.