2017-05-24 4 views
0

JPG 압축 기능으로 비트 맵을 압축하려고합니다.비트 맵을 압축하면 항상 같은 바이트 크기가 반환됩니다.

이 코드의 내 조각 :

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
originalBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); 
byte[] newArray = out.toByteArray(); 
Bitmap compressed = BitmapFactory.decodeByteArray(newArray, 0, newArray.length); 

이상한 행동 내가 압축 계수를 변경하면 (. 80 ~ 50에서 예)은 "밖으로"배열의 크기를 변경하는 것입니다 ... 비트 맵 "compressed"는 항상 "originalBitmap"과 동일한 바이트 번호로 유지됩니다.

누군가 나에게 설명 할 수있는 이유는 무엇입니까?!? X * Y * D, : 미리

감사 ...

답변

2

Bitmap 걸리는 바이트의 양이다

  • X 화소
  • Y에서 폭이고 높이에서, 픽셀
  • D은 픽셀 당 바이트 수로, 기본적으로 4입니다.

Bitmap이 JPEG, PNG, WebP 또는 기타 항목에서로드되었는지 여부는 중요하지 않습니다. 바이트 수는 해상도 (너비와 높이)와 비트 심도에 따라 결정됩니다.

따라서, 약간의 fuzzier 출력을 사용하여 이전과 동일한 바이트 수를 사용하여 Bitmap을 성공적으로 생성 할 수 있습니다.

+0

확인. 무슨 뜻인지 이해 했어! 비트 맵을 압축하는 좋은 방법을 제안 해 주시겠습니까? – Blasco73

+0

@ Blasco73 : "비트 맵 압축"이란 무엇을 의미하는지 모르겠습니다. "더 적은 메모리를 차지하는 더 작은 비트 맵을 만드는"것을 의미한다면, 원래의 비트 맵에서'createScaledBitmap()'을 사용하십시오. – CommonsWare

+0

가변 너비와 높이가 있지만 가변 압축 비율을 가진 비트 맵 (그러나 이미지)을 의미합니다! – Blasco73

관련 문제