Я нашел два способа решения этой проблемы (расшифровка в этом сообщении API контактов Google ). Во-первых, вы можете создать поток, который напрямую обращается к файлу, например:
System.IO.FileStream File = new FileStream( @"C:\test.jpg" );
Service.Update
(
Contact.PhotoEditUri,
File,
"image/jpeg",
null
);
Во-вторых, причина, по которой мой оригинальный код не удался, была в том, что мне пришлось сбросить позицию внутри MemoryStream. Это то, что я получаю за то, что я такой нуб на потоках. Как только функция Image.Save завершается, позиция находится в конце. Итак, все, что вам нужно сделать, это сбросить позицию в начало:
System.Drawing.Bitmap Image = new Bitmap( @"C:\test.jpg" );
System.IO.MemoryStream Memory = new MemoryStream();
Image.Save( Memory, System.Drawing.Imaging.ImageFormat.Jpeg );
Memory.Seek( 0, SeekOrigin.Begin );
Service.Update
(
Contact.PhotoEditUri,
Memory,
"image/jpeg",
null
);