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

Сохранение изображения Android - Android

Восстановить пароль Регистрация
 
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 15
02.01.2016, 00:41     Сохранение изображения Android #1
Работаю на 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) { }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1874 / 1608 / 496
Регистрация: 12.05.2014
Сообщений: 5,810
Завершенные тесты: 1
02.01.2016, 12:05     Сохранение изображения Android #2
гадать по куску кода?
разрешения в манифесте для начала проверь
и у меня то самое чувство, когда кто-то пытается сделать непонятно что, но рассказать он не считает нужным
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 15
02.01.2016, 23:28  [ТС]     Сохранение изображения Android #3
Паблито, Даже не знаю, что в манифесте этому view надо прописать. Вся графа в onDraw, в канвасе, тип drawOval и прочее. Как этот canvas заполучить в Bitmap виде? Что именно нужно вам показать для ответа?
Паблито
не спать!
1874 / 1608 / 496
Регистрация: 12.05.2014
Сообщений: 5,810
Завершенные тесты: 1
03.01.2016, 16:00     Сохранение изображения Android #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");
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 15
03.01.2016, 17:53  [ТС]     Сохранение изображения Android #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)
Для простоты проект скину
Вложения
Тип файла: rar Архив WinRAR.rar (7.10 Мб, 4 просмотров)
Паблито
не спать!
1874 / 1608 / 496
Регистрация: 12.05.2014
Сообщений: 5,810
Завершенные тесты: 1
04.01.2016, 12:20     Сохранение изображения Android #6
у меня на эмуляторе не выдает ничего такого, а реального устройства нет под рукой
и я тут подумал, все таки строка bitmap.recycle(); у меня там лишняя, ее лучше убрать
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 15
04.01.2016, 13:44  [ТС]     Сохранение изображения Android #7
Паблито, Сделал, ошибка больше не вылетает. А сам файл можно сохранить не где-то в дебрях лесных, а например в директиве галереи или вообще в видимых юзеру местах?
Паблито
не спать!
1874 / 1608 / 496
Регистрация: 12.05.2014
Сообщений: 5,810
Завершенные тесты: 1
04.01.2016, 13:59     Сохранение изображения Android #8
можно например так Не могу сохранить файл на карту
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2016, 15:06     Сохранение изображения Android
Еще ссылки по теме:

Android Android
Android Android
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] Android
Android.mk Android
Android Сохранение. Android Studio

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

Или воспользуйтесь поиском по форуму:
максим2000
1 / 1 / 0
Регистрация: 26.09.2015
Сообщений: 15
04.01.2016, 15:06  [ТС]     Сохранение изображения Android #9
Паблито, Все! Сработало. Спасибо огромное!
Yandex
Объявления
04.01.2016, 15:06     Сохранение изображения Android
Ответ Создать тему
Опции темы

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