Я хочу сохранить изображение с помощью моего разработанного приложения на мобильном телефоне, как лучше всего это сделать.
Я пытался сохранить через sqlite, но есть ли другие варианты?
У вас есть примеры того, нужно ли нам шифровать изображения?
см. этот stackoverflow.com/q/9357668/6017001
Шифровать или сжимать? @tTechDubey
Когда мы сохраняем изображения в путь, мы должны сжать изображение или мы можем сохранить без сжатия.
Рекомендуемый способ — сохранить изображение в виде файла вне базы данных, а затем сохранить путь или часть пути, достаточную для уникальной идентификации изображения в базе данных.
Чтобы сохранить изображение, вы должны сохранить его как BLOB на основе байта [] (массива байтов); Однако при использовании Android SDK существует ограничение, заключающееся в том, что можно получить только изображения размером менее 2 МБ, даже если их можно сохранить.
Также на самом деле довольно бесполезно хранить изображения (или любые большие файлы) с помощью SQLite или большинства структурированных баз данных, поскольку вы мало что можете сделать с запросом данных.
На самом деле вы сохраняете BLOB через SQL, используя что-то вроде: -
INSERT INTO your_table VALUES(x'00FF01EF');
Однако удобный метод SQLiteDatabase вставлять выполняет преобразование из byte[] в правильный SQL (шестнадцатеричная строка) от вашего имени.
Итак, вы обычно используете: -
ContentValues cv = new ContentValues();
cv.put("your_column",your_image_as_a_byte_array);
your_sqlitedatabase_object.insert("your_table",null,cv);
Вы извлекаете массив байтов из курсора (результат запроса), используя что-то вроде строк
your_retrieved_image_byte_array = your_cursor.getBlob(your_column_offset_as_an_int); //<<<<<<<<< CursorWindow full error if the row cannot fit into the CursorWindow which has 2MB limit
Вы можете взглянуть на Как я могу вставить изображение в базу данных sqlite, так как он более подробный и имеет код, который хранит как изображения, так и пути (любой из них сохраняется в зависимости от размера изображения, менее 100 КБ, затем сохраняется изображение, иначе путь хранится) и дополнительно извлекает изображения в ListView. Кроме того, хотя это и не рекомендуется, это способ обойти ограничение в 2 МБ Как использовать изображения в Android SQLite, превышающие ограничения CursorWindow?.
Неправильно сохранять изображение в базе данных. Скорее, вы должны сохранить путь к изображению