位图到文件,可以通过异步上传

时间:2013-08-31 06:24:14

标签: android file asynchronous upload bitmap

由于以前在实施工作照片上传系统方面出现问题而经历了一天的头痛后,我感觉自己处于家庭状态。我的最后和最后一步是允许我的用户在裁剪后上传图像。

裁剪发生后

我可以访问位图和使用位图的imageView。使用的异步请求lib是:http://loopj.com/android-async-http/

和api即时使用是以这样的方式设置的,我需要通过这样的“文件”发送:

File myFile = new File("/path/to/file.png");
RequestParams params = new RequestParams();
try {
    params.put("profile_picture", myFile);
} catch(FileNotFoundException e) {}

将位图转换为“文件”

的选项有哪些?

2 个答案:

答案 0 :(得分:5)

您可以使用Bitmap.compress方法将位图保存到文件。只需提供适当的FileOutputStream作为参数。

您也可以不使用文件上传图片,只需将其保存到字节数组,然后上传为该数组。

ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 85, out);
byte[] myByteArray = out.toByteArray();
RequestParams params = new RequestParams();
params.put("profile_picture", new ByteArrayInputStream(myByteArray), "image.png");

答案 1 :(得分:0)

试试这个:

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                        "/to";
File dir = new File(file_path);
if(!dir.exists)
dir.mkdirs();
File file = new File(dir, "file.png");
FileOutputStream fOut = new FileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();

并将以下权限放在您的清单文件中。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>