8.09.2014 / 07:09 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| Помогите разобраться... Я хочу считать файл в массив байт и этот массив скормить bitmap'е. Но чего-то не работает... public byte[] abyte0;
public InputStream is;
public int i;
Bitmap test;
... try {
is = this.getClass().getResourceAsStream("/res/drawable-nodpi/ic_launcher.png");
i = is.available();
abyte0 = new byte[i];
is.read(abyte0, 0, i);
is.close();
test = BitmapFactory.decodeByteArray(abyte0,0,i);
}catch(Exception e){}
Вроде abyte0 байты читает, через drawText выводится. А битмап пытаюсь рисовать - сразу прога глохнет. Что же не так? Изменено eNvisible (8.09 / 07:10) (всего 1 раз) |
8.09.2014 / 08:06 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| А нет, вру, в abyte[] попадает только первый байт... Длинна 1 байт. А как его правильно считать - файл этот?
Изменено eNvisible (8.09 / 08:06) (всего 1 раз) |
8.09.2014 / 08:21 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| eNvisible, а зачем такие сложности? http://developer.android.com/r...s/BitmapFactory.html — там есть создание bitmap на основе того же ресурса или файла. |
8.09.2014 / 08:37 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| Ксакеп, А за тем, что надо мне так) Считываемый файл не обязательно bitmap'ом будет. Просто для примера я выбрал картинку...
|
8.09.2014 / 08:54 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| eNvisible, не делается так. Файл должен находиться в папке assets, получать с помощью метода context.getAssets().open???("file.png")
__________________
let live |
8.09.2014 / 09:14 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| aNNiMON, И так не работает. Файл в assets лежит...
Изменено eNvisible (8.09 / 09:22) (всего 1 раз) |
8.09.2014 / 09:42 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| eNvisible, is.available() не вариант. Тут сотню раз давали пример чтения массива байт, там вида: while( (read = is.read(buf, 0, buf.length) > 0) и всё в ByteArrayOutputStream писалось. Поищи, я сейчас не с компа.
__________________
let live Изменено aNNiMON (8.09 / 09:42) (всего 1 раз) |
8.09.2014 / 09:45 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Вот тут как раз из assets файл читается, только без буфера, а побайтно. http://annimon.com/article/48 __________________
let live |
8.09.2014 / 09:47 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| aNNiMON, Для j2me эта тема работает... Я вот по этому примеру с сайта одного пробую: // отрывок из офф. док.
InputStream is = getAssets().open("read_asset.txt");
// гарантировано возвратит размер файла,
// размер файла не должен быть больше 2Гб
int size = is.available();
// считываем весь файл в буфер
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
Поищу...) |
8.09.2014 / 09:49 | |
eNvisible Пользователь Сейчас: Offline
Имя: **** Откуда: В России. Регистрация: 19.07.2014
| aNNiMON, О, пасибо, буду разбираться)
|