2009-10-01 4 views
2

Si je charge un bitmap à l'aide d'un chargeur dans Flex, je peux utiliser loaderInfo.bytesTotal pour obtenir la taille, le nombre total d'octets utilisés, d'un bitmap.Trouver le nombre total d'octets utilisés par un bitmap dans Flex

Si je crée un bitmap en cours d'exécution, comment puis-je connaître la taille, le nombre total d'octets utilisés, par ce bitmap.

Veuillez nous consulter. Merci

Répondre

4

var bitmapByteSize: int = bitmap.bitmapData.getPixels (bitmap.bitmapData.rect) .length;

Cela pourrait faire l'affaire.

+0

JStriedl, merci pour votre réponse. J'ai déjà essayé une méthode similaire. var byteArray: ByteArray = _bitmap.bitmapData.getPixels (nouveau Rectangle (0, 0, _bitmap.width, _bitmap.height)); _bitmapTotalBytes = byteArray.length; Cependant, _bitmapTotalBytes est beaucoup plus grand que le fichier jpg d'origine, bien que j'ai déjà réduit la largeur et la hauteur. Savez-vous pourquoi? Merci. – michael

+0

Le format jpeg est compressé lorsqu'il est stocké sur le disque et doit être décompressé pour être affiché. Ainsi, la longueur du ByteArray sera beaucoup plus grande que le fichier, car il représente les données de pixel au format non compressé et affichable, PAS la taille du fichier JPEG compressé d'origine. – JStriedl

+0

Striedl, Merci. – michael

3

Je pense une meilleure solution que celle ci-dessus serait:

var bitmapByteSize:uint = bitmap.bitmapData.width * bitmap.bitmapData.height * 4; 

En effet, en utilisant la méthode getPixels() crée un ByteArray supplémentaire, il est à la fois lent et utilise la mémoire supplémentaire.

+0

Merci bslote. Quelle est la signification de "* 4" dans l'équation. Je veux dire pourquoi à multiple par 4 mais pas d'autre nombre. Merci. – michael

+0

Désolé pour la réponse différée, michael. C'est parce qu'il y a quatre canaux de 8 bits dans BitmapData (RVB et alpha). Nous prenons donc le nombre de pixels dans le bitmap (width * height), puis le multiplions par le nombre de canaux (4) multiplié par le nombre d'octets par canal (1) pour obtenir le nombre total d'octets dans le bitmap. – bslote

+0

Merci, bslote. – michael

Questions connexes