I think the main reason the code failed with the memory stream is, that after you save the image to the stream, the location inside the stream is at the end, so when we try to send it, it won't work... you probably want to rewind the stream before you give it to the service method.
Frank On Thu, Mar 5, 2009 at 5:22 AM, Camel <[email protected]> wrote: > > Hi Julian, > > I switched from Image/MemoryStream to FileStream as you suggested and > this has resolved the issue! Many thanks - I've been banging my head > against a brick wall way too long on this issue. > > Then I moved onto the next stage of my mini-project. I'm using a 3rd > party library to read vCard files. In the vCard library, the Photo > field is implemented as an Image. So I'm back to square one! Although > at least now I know that the problem has something to do with the > Image.Save( Stream, ... ) function. > > I did a little more testing and found out the following: > > * Tried Image.Save( MemoryStream, Image.RawFormat ) - that didn't make > any difference. > * Tried Image.Save( MemoryStream, ImageCodecInfo, Parameters ) passing > up the Compression parameter for a Jpeg. This also made no difference. > * Tried Image.Save( FileName ) and then opened the file using a newly > constructed FileStream. This worked, so there must something I'm > missing with the other versions of the routine. > > I'd like to do this in memory. Any suggestions? > > Regards, > > Camel > > On Mar 4, 2:31 am, "Julian (Google)" <[email protected]> wrote: > > Hi Camel, > > > > Are you getting the error only with this particular image? Please try > > a smaller one. > > > > You can also try the following: > > > > System.IO.FileStream fs = new System.IO.FileStream("C:\\foto.jpg", > > System.IO.FileMode.Open); > > contactsService.Update(entry.PhotoEditUri, fs, "image/jpg", "Contact > > Photo"); > > > > Something important, the latest library was updated to use Contacts V2 > > and the EditPhotoUri is not longer used. > > > > -Julian > > > > On Mar 2, 3:20 am, Camel <[email protected]> wrote: > > > > > After some research, I've tried the following code: > > > > > System.Drawing.Bitmap Image = new Bitmap( @"C:\test.jpg" ); > > > System.IO.MemoryStream Memory = new MemoryStream(); > > > Image.Save( Memory, System.Drawing.Imaging.ImageFormat.Jpeg ); > > > > > Service.Update > > > ( > > > Contact.PhotoEditUri, > > > Memory, > > > "image/jpeg", > > > null > > > ); > > > > > The Service is using ClientLogin authentication. Before this code > > > runs, I have successfully retrieved the contact. > > > > > After this code runs, however, I get a GDataRequestException. The > > > error message returned is, "A temporary internal problem has occurred. > > > Try again later". The error message in the InnerException contains the > > > following, "The remote server returned an error: (500) Internal Server > > > Error." > > > > > After yet more research, I found hints that the error codes from the > > > Google service may not be all that descriptive - and may simply return > > > error 500. > > > > > So maybe the problem is with my code? Does anybody have sample code to > > > demonstrate how this should be done? > > > > > Thanks, > > > > > Camel > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Contacts API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-contacts-api?hl=en -~----------~----~----~----~------~----~------~--~---
