Я запускаю приложение для устройства (hisilicon) и Android.
Android и устройство обмениваются данными через сокеты.
Устройство отправляет изображение (h.264) и показывает его на Android в TextView.
Я могу получить растровое изображение из TextureView, используя текстуруView.getBitmap().
Я сделал кнопку для сохранения изображения,textureView.getBitmap().
Код: Выделить всё
Код: Выделить всё
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
}
}
Код: Выделить всё
Если да, то как сохранить растровое изображение в файл 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
Мобильная версия