Olá Felipe!
O sistema Android tem uma forma particular de trabalhar com imagens. Ele não considera o tamanho em KB ou MB real da imagem , na verdade ele faz um cálculo do espaço necessário em memória baseado no tamanho em pixels.
Isso acontece porque antes de salvar ou mostrar a imagem, o Android precisa primeiro saber se tem espaço para isso, então ele faz esse cálculo e reserva esse espaço - e mesmo que a imagem não ocupe todo o espaço reservado, ele não é liberado, fica ali reservado para a imagem e é quando temos erros de falta de espaço.
Neste cálculo, leva-se em consideração o tamanho da imagem em pixels (base x altura), e para o sistema cada pixel tem o tamanho de 4 bytes (cada pixel é lido como um ARGB, logo, 1 pixel para cada uma dessas camadas). Depois, divide-se por potências de 1024 para saber o tamanho da imagem em bytes (1024 para KB, 1024^2 para MB, 1024^3 para GB, 1024^4 para TB)
Vamos a um exemplo!
Digamos que você tenha uma foto 512 x 384.
Logo, 512 * 384 = 196608 pixels.
Cada pixel ocupa 4 bytes, então 196608 * 4 = 786432 bytes.
Para saber o tamanho em MB, dividimos pela potência 2 de 1024, ou seja,
786432/(1024 * 1024) = 0,75MB
Para saber o tamanho em KB, dividimos pela potência 1 de 1024, ou seja,
786432/(1024) = 768 KB
Ou seja, mesmo que sua imagem tenha o tamanho de 200KB, o sistema vai reservar 768KB para ela e todo o espaço extra vai constar como "usado".
Como resolver isso? Diminuindo o tamanho base x altura das imagens. :/
E a câmera do aparelho? As fotos tiradas pela câmera do aparelho tendem a ser otimizadas, ou seja, a câmera é configurada para tirar as fotos do tamanho exato que será reservado em memória, por isso conseguimos armazenar várias fotos no celular, sem problemas (e por isso as fotos tiradas com celular, quando jogamos no computador, são tão pequenininhas).
Espero ter ajudado!!!