One of the most starred Android issues of all time, currently #20 of 21363 from the top with 1191 stars, is the absolutely awful quality of synced contact photos (issue #3870, opened in 2009). ICS attempted to resolve the issue by bumping the quality to 256x256 pixels, but Google sync would without mercy squash it right back down to blurry pixel dirt (96x96).

To recap, there are actually a couple of issues:

  1. Contact photos set in Gmail.com are downsized to 96x96. That continues to be the case, and this isn't really even an Android problem - it's up to the Gmail team to fix it. 3 years later and roughly 8 months since ICS was announced, it hasn't. If the next bullet point at least worked the way it should, I wouldn't have had as big of a problem with this issue, but it still doesn't. Read on to figure out what I'm talking about.
  2. Contact photos set on Android can be 256x256 starting with ICS, except in ICS they still get downsized when syncing to Gmail.com and other Android devices, rendering them absolutely useless. This basically means that they're stored locally. If Google could only solve this problem in Jelly Bean, we could at least start setting our contact photos from Android, so long as they're not clobbered when syncing to new devices or when syncing other contact fields back from Gmail.com.

Note: There was one very welcomed improvement in ICS that sucked hi-res photos into Android automatically for contacts with associated Google+ accounts. This helps tremendously, but is more of a temporary workaround for both of the above. Additionally, it's part of the stock People app's functionality, so Sense and other OEM replacements don't benefit here. I thought I'd point this out, since it is indeed a noticeable improvement - just fire up your ICS+ device and start clicking contacts with G+ accounts. You'll see their images go hi-res and clear in front of your very eyes.

The Test

In Jelly Bean, contact photos can go as high as 720x720, and I've observed an improvement - contact sync from one JB device to another preserved the high resolution photo. Both devices (Nexus 7 and Galaxy Nexus running JB) were showing the same hi-res image, while an ICS tablet (Transformer Prime) got a low-res image:

Left: hi-res original photo, Nexus 7 JB; Right: synced, still hi-res, Galaxy Nexus JB

Synced, low-res photo, Transformer Prime ICS. This was expected

And Theeeen?

Could that mean that issue #2 was really solved in JB?.. At first, that's exactly what I thought. I even updated a few metadata fields that belonged to the same contact and observed no change in photo quality. This right there is already a huge improvement over ICS. So, case closed, right? Wrong.

And then I removed the Google account from the Galaxy Nexus and re-added it. I waited for the sync to complete. At this point, something I could not have predicted occurred. Would you like to take a guess? Maybe even two?

Alright, I'll tell you. The Galaxy Nexus running Jelly Bean no longer had a contact photo. At all. The photo on the Nexus 7 went from hi-res to low-res. How's that for a curveball? I've run the same test a few times, and the result was the same every time. Here, zoom in if you want:

Conclusion

So Google sync now correctly syncs hi-res photos between Jelly Bean devices, the changes are not permanent, and the whole thing is a terrible mess. Eventually, hi-resolution photos end up clobbered with low-res garbage. There was a lot of commotion around the quality bump in Jelly Bean, but it seems like Google still hasn't fixed the fundamental issue, and the self-destructive behavior continues. It's possible that once every device moves to Jelly Bean, this will stop happening, but I believe it will take a lot more effort on Google's part to make sure that doesn't happen first.

I have a few ideas on what goes wrong behind the scenes, but the exact technical reason really doesn't matter - Google contact photo sync is still a clusterf$%^#, even with Jelly Bean. It's a shame, really.

Your move, Google, once again. But hey, if even Vic couldn't get it fixed in over half a year, I am not getting my hopes up.

P.S. That is indeed my dog. No, you can't have it.