2017-09-05 3 views
0

Je veux savoir si la mémoire de Bitmap et l'octet [] ont une connexion? Et le fichier jpeg est 28kb mais quand je charge le fichier image en bitmap alors je reçois les octets de l'image bitmap c'est 200 * 1204 octets. Pourquoi est-ce? Si je change le bitmap (A) et le compresse en byte [] (la longueur de byte [] est 280 * 1024 byte) et puis crée le bitmap (B) de byte [] final, j'obtiens l'octet [] à partir de l'image bitmap (B) mais l'octet []. La longueur n'est pas 280 * 1024 octets - pourquoi? Je ne trouve aucun article pour cela. Qui peut expliquer cela? Merci.La mémoire et l'octet [] de Bitmap sont-ils connectés? et la taille du fichier jpeg avec byte []

byte[] finalData = bitmapUtil.getScaledImageBytes(originBitmap,BitmapUtil.MAX_IMAGE_DATA_LENGTH); (finalData.length 280 * 1024) 
originBitmap = BitmapFactory.decodeByteArray(finalData,0,finalData.length); 
byte[] now = bitmapUtil.bitmap2Byte(originBitmap); (now.length 400 * 1024) 

public byte[] bitmap2Byte(Bitmap bitmap) throws IOException { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,bos); 
    byte[] data = bos.toByteArray(); 
    bos.close(); 
    return data; 
} 

Répondre

0

Je pense qu'une fois que vous chargez l'image à un objet Bitmap, un format/propriétés de compression pourraient être la cause du changement de taille que vous voyez. Si vous compressez le bitmap, vous modifiez les données. Le tableau d'octets est donc censé avoir une longueur différente.

En ce qui concerne une certaine lecture, ce n'est pas exactement ce que vous vouliez, mais peut-être ceux-ci peuvent aider:

Android - Reduce image file size

Loading Large Bitmaps Efficiently

Strange out of memory issue while loading an image to a Bitmap object

+0

merci. Je vais utiliser une autre façon de résoudre ce problème. – empt