This is your problem code:
byteOimage = System.Text.Encoding.Unicode.GetBytes((ds.Tables["Image"].Rows[c - 1]["Oimage"]).ToString());
Access stores the data as a byte array. But then you take that byte array and convert it to a string.
Step through your code and put a breakpoint in at that line. Then, add a watch for
ds.Tables["Image"].Rows[c - 1]["0image"]).ToString()
and see what it says.
Just get rid of the ToString() on that line. You may also have to type cast it as in the other answer.