Estou desenvolvendo uma aplicação no android studio, o banco de dados que estou utilizando é o SQLite, em um certo momento faço download de algumas images e salvo no banco (não é o ideial, mas estou continuando a aplicação que foi iniciado por outra pessoa), mas o que gostaria de fazer é comprimir a imagem antes de salvar no banco, diminuir o tamanho dela, sabem como devo fazer? tentei usar o Bitmap, mas não funcionou bem.
Obs: Quero fazer isso pois quando salvo, uma imagem acima com 5 mb ou mais no banco ela não aparece no layout e gera o erro Couldn’t read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. então tive a ideia de diminuir o tamanho da imagem.
Que tipo/formato de imagem é essa? A compressão possível depende do formato. Por exemplo, com jpeg, é possível diminuir bastante o tamanho, com alguma perda de qualidade. Já bitmap não comprime, mas pode ser “zipado” (ou algum processo similar).
Já procurou esse erro do SQLite. Talvez você precise ajustar alguma coisa no banco para conseguir armazear imagens maiores. E, mesmo que você diga que é um sistema legado, considere mudar esse esquema de armazenamento, salvando a imagem fora do banco.
Obrigado pela resposta, o formato das imagens é jpeg. Realmente tenho que mudar esse esquema de imagens, não é viável ficar assim, mas como o app já está rodando e eu peguei o bonde andando, então tenho que solucionar por enquanto o problema.
Já pesquisei e não encontrei nada no SQLite, talvez não tenha pesquisado certo. Como posso diminuir essa imagem no android?
Essa imagens vem baixadas do CRM salesforce e eu irei salva-las em uma coluna blob, vi o glide, mas acredito que ele não se encaixa na minha necessidade.
Estou pesquisando mais sobre o meu o erro: Failed to read row 0, column 0 from a CursorWindow which has 0 rows, 16 columns. Verifiquei que a imagem está inserida no banco de dados, mas na hora da recuperação da mesma ele gera o erro.