Растровое изображение в файл, который может быть загружен через асинхронный

После дня головных болей из-за предыдущих проблем, связанных с внедрением работающей системы загрузки фотографий, я чувствую себя как дома. Последний и последний шаг - разрешить пользователям загружать изображение после его обрезки.

после обрезки у меня есть доступ к растровому изображению и 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) {}

Каковы мои варианты для превращения моего растрового изображения в "файл"

2 ответа

Вы можете сохранить Bitmap в файл, используя метод 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");

Попробуй это:

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"/>
Другие вопросы по тегам