Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 16
#1

Сохранение изображения Android - Программирование Android

02.01.2016, 00:41. Просмотров 977. Ответов 8
Метки нет (Все метки)

Работаю на android всего неделю. Знаю Java SE. Надо получить графику ImageView и сохранить ее в Bitmap и этот Bitmap сохранить во внутренней памяти. Мог бы и Drawable извлечь, но графика вся в методе onClick. Плюс файл не хочет сохраняться. Как достичь нужного мне результата? Есть у кого идеи?
Вот сам код:
Java
1
2
3
4
5
6
7
8
9
10
Bitmap bitmap;
            File image = new File(Environment.getDataDirectory().getPath(),"image.png");
            FileOutputStream streamsave = null;
            try {
               Bitmap img = Bitmap.createBitmap(graphic.getResources().getDisplayMetrics(), graphic.getWidth(),  graphic.getHeight(), Bitmap.Config.ARGB_8888);
                streamsave = new FileOutputStream(image);
                img.compress(Bitmap.CompressFormat.PNG, 85, streamsave);
                streamsave.flush();
                streamsave.close();
            } catch (IOException e) { }catch (NullPointerException e) { }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2016, 00:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сохранение изображения Android (Программирование Android):

Сохранение. Android Studio - Программирование Android
Здравствуйте. Пишу приложение в Android studio. Имеется кнопка "продолжить". Интересно как сделать, чтобы при нажатии на эту кнопку...

Android Загрузка изображения на стену vkontakte - Программирование Android
Здравствуйте всем, возникла необходимость загрузить фотографию на стену вконтакте. На сайте разработчиков есть статья Загрузка файлов ...

Где взять стандартные изображения Android - Программирование Android
Где-то можно взять системные изображения из последних версий Андроида? То есть не иконки как на...

Сохранение выбранного изображения в памяти приложения - Программирование Android
Доброго времени суток. Есть imageView, по нажатию выбираю фото из галереи. Однако каждый раз выбирать надо заново. Как исправить? Буду...

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...

Android studio, как запускать программу сразу на android смартфоне подключенному к usb? - Программирование Android
android studio, как запускать программу сразу на android смартфоне подключенному к usb?

8
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,863
Завершенные тесты: 1
02.01.2016, 12:05 #2
гадать по куску кода?
разрешения в манифесте для начала проверь
и у меня то самое чувство, когда кто-то пытается сделать непонятно что, но рассказать он не считает нужным
0
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 16
02.01.2016, 23:28  [ТС] #3
Паблито, Даже не знаю, что в манифесте этому view надо прописать. Вся графа в onDraw, в канвасе, тип drawOval и прочее. Как этот canvas заполучить в Bitmap виде? Что именно нужно вам показать для ответа?
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,863
Завершенные тесты: 1
03.01.2016, 16:00 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
предположим view это ссылка на нужное нам вью, с которого надо сделать битмап
1. создаем в активити метод
Java
1
2
3
4
5
6
7
8
9
10
11
    private void saveAsBitmap(View view, String filename) {
        view.setDrawingCacheEnabled(true);
        Bitmap bitmap = view.getDrawingCache();
        try {
            FileOutputStream out = openFileOutput(filename, MODE_PRIVATE);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // ставить 85 бесполезно, PNG - это формат сжатия без потерь
            out.close();
        } catch (Exception ignored) {
        }
        bitmap.recycle();
    }
если метод размещать не в акитивити, а в левом классе, то придется передавать в метод еще и ссылку на контекст что бы можно было вызвать методы openFileOutput / openFileInput

2. где-то в коде когда надо записать файл, вызываем наш метод
Java
1
                saveAsBitmap(view, "image.png");
Когда надо будет получить ссылку на файл или FileInputStream, вызываем соответственно методы
Java
1
2
3
File file = getFileStreamPath("image.png");
// или
FileInputStream inputStream = openFileInput("image.png");
1
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 16
03.01.2016, 17:53  [ТС] #5
Паблито, При нажатии на кнопку, вызывающую метод, среди процессов вылетает такое

Java
1
2
3
4
5
6
7
8
9
01-03 17:44:43.395 30000-9389/? E/DatabaseUtils: Writing exception to parcel
                                                 java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
                                                     at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
                                                     at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
                                                     at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
                                                     at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
                                                     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
                                                     at android.os.Binder.execTransact(Binder.java:388)
                                                     at dalvik.system.NativeStart.run(Native Method)
Для простоты проект скину
0
Вложения
Тип файла: rar Архив WinRAR.rar (7.10 Мб, 5 просмотров)
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,863
Завершенные тесты: 1
04.01.2016, 12:20 #6
у меня на эмуляторе не выдает ничего такого, а реального устройства нет под рукой
и я тут подумал, все таки строка bitmap.recycle(); у меня там лишняя, ее лучше убрать
0
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 16
04.01.2016, 13:44  [ТС] #7
Паблито, Сделал, ошибка больше не вылетает. А сам файл можно сохранить не где-то в дебрях лесных, а например в директиве галереи или вообще в видимых юзеру местах?
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,863
Завершенные тесты: 1
04.01.2016, 13:59 #8
можно например так Не могу сохранить файл на карту
0
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 16
04.01.2016, 15:06  [ТС] #9
Паблито, Все! Сработало. Спасибо огромное!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2016, 15:06
Привет! Вот еще темы с ответами:

Ошибка: Caused by Android java.lang.ClassCastException: android.app.Application cannot be cast - Программирование Android
Здравствуйте. Очень нужен ваш совет. При запуске приложения появляется ошибка: Caused by: java.lang.ClassCastException:...

Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK? - Программирование Android
Можно ли писать в нем готовые приложения Android?

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал - Программирование Android
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае - "RTFM" и точка. Так вот, официального мануала, где есть ответ на...

Android.support.v4.app.FragmentActivity не работает в Android Studio - Программирование Android
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня вот это Активити package...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
04.01.2016, 15:06
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru