Файлы и Base64
от eNvisible
Как-то на форуме задавал вопрос на тему того, как считать файл .png из assets в массив байт(была затея с защитой графики). Не знаю почему, но картинка в буффер не читалась, а вот с .txt файлом проблем не возникло. И пришла мне в голову вот такая дурацкая вещь...
Решил я свои картинки перевести в текст через Base64, и уже эти .txt файлы кинуть в папку assets. А для удобства открывания сделал в активити простой метод:
А потом в своей View просто задавать битмапы так:
Так как в ходе процесса файл читается в String-переменную, то это и можно использовать для прятания графики. Например читать кусками или клеить картинку из нескольких String-переменных... Вобщем придумать можно что-нибудь. Да и в Base64 можно запихать "не только лишь" картинки Файл.txt весом 100kb+ открылся моментально. Всё это накрутилось в процессе создания одной игрушки(хотя я понимаю, что Base64 не из этой области). Может кому-нибудь это будет интересно...
Решил я свои картинки перевести в текст через Base64, и уже эти .txt файлы кинуть в папку assets. А для удобства открывания сделал в активити простой метод:
- ...
- private byte[] buffer;
- private InputStream is;
- private Bitmap buffBitmap;
- private String dataFile;
- private int size;
- public static MainActivity link;
- ...
- public Bitmap getBase64(String fileName) {
- try {
- //поток принимает файл.txt из assets
- is = this.getAssets().open(fileName);
- //получаем размер файла
- size = is.available();
- //задаём массив байт
- buffer = new byte[size];
- //читаем в него наш файл.txt
- is.read(buffer);
- //получаем строку
- dataFile = new String(buffer);
- is.close();
- //задаём новые данные в буфер
- buffer = Base64.decode(dataFile.getBytes(), Base64.DEFAULT);
- //буфферный битмап принимает массив buffer
- buffBitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
- } catch (Exception e) {}
- //эти данные примет bitmap из view
- return buffBitmap;
- }
А потом в своей View просто задавать битмапы так:
- private Bitmap myBitmap;
- ...
- myBitmap = MainActivity.link.getBase64("test.txt");
Так как в ходе процесса файл читается в String-переменную, то это и можно использовать для прятания графики. Например читать кусками или клеить картинку из нескольких String-переменных... Вобщем придумать можно что-нибудь. Да и в Base64 можно запихать "не только лишь" картинки Файл.txt весом 100kb+ открылся моментально. Всё это накрутилось в процессе создания одной игрушки(хотя я понимаю, что Base64 не из этой области). Может кому-нибудь это будет интересно...