This code works pretty well to get a high-res photo:
Uri my_contact_Uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(id));
InputStream photo_stream = ContactsContract.Contacts.openContactPhotoInputStream(cr, my_contact_Uri, true);
BufferedInputStream buf = new BufferedInputStream(photo_stream);
Bitmap my_btmp = BitmapFactory.decodeStream(buf);
buf.close();
return my_btmp;
Also, just fyi, high-res contact photos didn't exist before API 14, so if you're running it on a AVD/Device with API 13 or less, you can't get a high-res photo.
Look at this question: Get high-res contact photo as bitmap below API level 14 Android for more info.