-
Compression de bitmap
Bonjour à toutes et à tous =)
J'aurai une petite question concernant la compression de photo sur Android.
J'ai une photo de taille N et j'aimerais la compresser (en conservant les proportions hauteur/largeur) pour qu'au final elle ne fasse qu'au plus 100Ko. (En se rapprochant le plus possible du 100Ko).
J'ai ma petite idée de comment procéder, mais ça me parait aussi hasardeux que pas du tout opti x)
Je pense enregistrer la photo sous une structure Bitmap. Ensuite, recréer cette Bitmap avec des dimensions divisées par x (x, à déterminer..) via la méthode createScaledBitmap. Si la taille de ma Bitmap n'est pas inférieur à 100Ko, je réitère l'opération.
Existe-t'il une manière plus propre de procéder ?
En vous remerciant =)
-
Bonjour kegilko,
Je ne sais pas comment compresser/décompresser une image, mais, en attendant qu'un expert passe, tu peut peut-être regarder le code source des logiciels de compression, ou regarder si une librairie ne le fait pas déjà. Cela peut te donner des idées!
-
1. Choisir un algorithme de compression (JPEG ?)
2. Choisir une qualité de compression pour cet algorithme (par exemple Q=50 pour JPEG)
3. Déterminer le ratio moyen de compression (pour JPEG Q=50, le ratio moyen est de 15 : 1) (R)
Ensuite on peut faire une estimation de la taille nécessaire:
Surface originale: WH
Surface finale: wh
Taille mémoire finale non compressée: 4wh
Taille mémoire finale compressée: 4wh/R
4wh/R = 100000
hors, w = h * W / H
4h²W/HR = 100000
Donc, première estimation de taille:
h = sqrt(25000 * H * R / W)
w = h * W / H
Pour une image de 2500x1400 (W=2500, H=1400), avec une compression JPEG Q=50 (R=15)
Cela fait: h = sqrt(25000 * 1400 * 15 / 2500) = 458
et donc w = 818
-
huuuu, merci beaucoup Nicro !
@Minicalion : j'avais parcouru la doc android et fais quelques recherches sur le net sans trouver de vrai solutions...
Et du coup la manip' de Nicroman va me permettre de faire ça 'à la main', c'est pas plus mal.