CompressMaster, you were right at the very beginning.
RLE preprocessing. Maximum 4-bit lenghts. Symbols are: series of O's, ending with one o.
(Why don't you tell us, how you generated the file?) 
C#:
Code:
using System.Collections.Generic;
using System.IO;
namespace Decoder
{
class Program
{
static void Main(string[] args)
{
//reading
byte[] bytes = File.ReadAllBytes("only-O.txt");
List<int> lengths = new List<int>();
//unary to lengths
int length = 0;
for (int i = 0; i < bytes.Length; i++) {
if (bytes[i] == 'O') length++;
else {lengths.Add(length-1);length = 0;}
}
//encoding to nibbles (4-bits)
List<byte> encoded_data = new List<byte>(lengths.Count);
for (int i = 0; i < lengths.Count; i+=2)
encoded_data.Add((byte)((lengths[i]<<4) | (lengths[i+1])));
//writing result
File.WriteAllBytes("photo.jpg",encoded_data.ToArray());
}
}
}
Edit: updated code to reveal photo immediately.