2

由于之前实施工作照片上传系统的问题而头疼了一天之后,我觉得我在家里伸展。我的最后一步也是最后一步是允许我的用户在图像被裁剪后上传图像。

裁剪发生后,我可以访问位图和使用位图的 imageView。我使用的异步请求库是: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) {}

将位图转换为“文件”的选项是什么

4

2 回答 2

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");
于 2013-08-31T06:54:09.280 回答
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"/>
于 2013-08-31T06:53:33.777 回答