通过http post上传图像,同时在Android中保留EXIF数据

时间:2011-04-19 05:46:59

标签: android

我是Android开发的新手,并且遇到了我的第一个主要应用程序的问题,我非常感谢帮助。此应用程序的目标是允许用户选择存储在手机上的图像,并通过http post方法将该图像上传到服务器,将JPEG二进制数据作为参数。问题是我需要保留EXIF数据。我目前已将图像推送到我的模拟器的SD卡上,并使用基本应用程序确认其中包含EXIF数据。

这是我到目前为止所得到的:

为用户提供图像选择,并因此获得图像Uri,我使用:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

在我的活动结果代码中,我获得了我的Uri:

Uri selectedImage = data.getData();

我用它来获取图像的位图,并将其作为预览显示给用户。

这是我被困的地方,因为我没有起诉如何最好地上传它。为了做类似的事情,我在this example看了很多,但他似乎只是在压缩位图并发送它,这可能会破坏我需要的EXIF数据,而且我甚至无法得到工作。

这是我现在正在尝试的代码,由于我对这些事情的经验不足可能完全错误:

Uri selectedImage = data.getData();
InputStream imageInputStream=this.getContentResolver().openInputStream(selectedImage);
String str=imageInputStream.toString();
byte[] imageBits=str.getBytes();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("where I am sending it");
ByteArrayBody toUpload = new ByteArrayBody(imageBits, "androidpic.jpg");

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("userImage", toUpload);
reqEntity.addPart("FileName", new StringBody("android pic"));
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);

这当然似乎不起作用。

有没有人有从这样的手机上传jpeg的经验,谁可以给我一些指示?任何帮助将不胜感激。

0 个答案:

没有答案
相关问题