Android сохранить растровое изображение в файл изображенияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android сохранить растровое изображение в файл изображения

Сообщение Anonymous »

Как сохранить растровое изображение в файл изображения? (png/jpg любые типы не имеют значения...)
Я запускаю приложение для устройства (hisilicon) и Android.

Android и устройство обмениваются данными через сокеты.

Устройство отправляет изображение (h.264) и показывает его на Android в TextView.

Я могу получить растровое изображение из TextureView, используя текстуруView.getBitmap().

Я сделал кнопку для сохранения изображения,textureView.getBitmap(). и функция onclick аналогична ниже.

Код: Выделить всё

public String getCurrentTimeString() {
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
int MM = Calendar.getInstance().get(Calendar.MONTH) + 1;
int dd = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
int hh = Calendar.getInstance().get(Calendar.HOUR);
int mm = Calendar.getInstance().get(Calendar.MINUTE);
int ss = Calendar.getInstance().get(Calendar.SECOND);

String result = yyyy+"-"+MM+"-"+dd+" "+hh+":"+mm+":"+ss;
return result;
}

public void onBtnSavePng(View view) {
try {
File storage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String fname = getCurrentTimeString() + ".jpg";
File tp = new File(storage, fname);
Bitmap bm = textureView.getBitmap();
tp.createNewFile(); // Result of File.createNewFile() ignored

FileOutputStream ot = new FileOutputStream(tp);
bm.compress(Bitmap.CompressFormat.JPEG, 100, ot);
ot.close();
} catch(Exception e) {
Log.d("onBtnSavePng", e.toString()); // java.io.IOException: Operation not permitted
}
}
Я разрешаю использовать разрешения AndroidManifest.xml, как показано ниже, и android:requestLegacyExternalStorage="true" находится в приложении. Есть ли проблемы с моими кодами?
Если да, то как сохранить растровое изображение в файл png или jpg?
Думаю, мое приложение не имеет доступа к каталогу.
Спасибо, что прочитали мой вопрос.

Решено самостоятельно.

Код: Выделить всё

public void onBtnSavePng(View view) {
try {
String root = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES).toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
String fname = getCurrentTimeString() + ".jpg";
File file = new File(myDir, fname);

FileOutputStream out = new FileOutputStream(file);
Bitmap bm = textureView.getBitmap();
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch( Exception e) {
Log.d("onBtnSavePng", e.toString());
}
Я не понимаю, почему мой код еще не работает.

В любом случае, спасибо всем, кто мне помогает.

Я попробую все коды ответа.
Спасибо.>

Подробнее здесь: https://stackoverflow.com/questions/657 ... image-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»