You can do it - it's not even complicated - but you may find you need more than one field: two fields will only hold 2* 64K = 128K and it;s very easy for a modern image to exceed that.
Instead of reading the whole image:
fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));
Just read the max size of your DB block converted to Base 64:
l = 4*(n/3) (rounded up a four byte boundary)
n is the input block size, and l = 64K so:
n = 3 * 65536 / 4 == 49152
So to read a block:
fs.Read(ImageData, 0, 49152);
Convert that to Base64 and store it, then read the second section:
fs.Read(ImageData, 49152, 49152);
And repeat until you run out of data.
But a much better solution is to store it in a binary field that takes the whole file - every DB I know of allows for that - and convert it base64 if you need it later for presentation.