찾다

 >  Q&A  >  본문

Android压缩图片,程序崩溃

高洛峰高洛峰2770일 전389

모든 응답(3)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-17 16:58:44

    image.compress() 메소드는 비트맵의 크기를 전혀 줄이지 않으며 이미지 압축을 달성할 수 없습니다. 따라서 baos와 isBm은 모두 적은 양의 메모리 공간을 차지합니다. 압축에는 inSampleSize를 직접 사용하는 것이 더 좋습니다

    회신하다
    0
  • PHPz

    PHPz2017-04-17 16:58:44

    쓰는 방식에 따라 2000*1400 사진의 insamplesize는 1로 설정되고, 디코딩에 필요한 메모리도 엄청나게 급증하게 됩니다.
    해상도에 특별한 요구사항이 없다면, 이미지를 변환해야 합니다. 너비와 높이를 주류 화면 크기로 설정하고, 대상 크기를 높이의 절반으로 설정하여 명확하게 표시할 수 있습니다.
    또한 사용 가능한 메모리를 실시간으로 동적으로 모니터링하여 샘플 크기를 동적으로 조정할 수도 있습니다.
    /p>

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:58:44

    두 메소드 모두 Bitmap 매개변수를 수신하므로 호출 시 이미지를 메모리로 읽어야 합니다. 확실히 메모리 급증이 발생합니다.
    이미지를 압축하려면 이미지의 저장 위치를 ​​수락하고 읽을 때 압축하는 것이 가장 좋습니다. 여기에서 Options 클래스를 통해 설정한 다음 저장할 수 있습니다.
    이미지 압축 문제의 경우 원본 이미지를 메모리에 로드하지 마십시오. 원본 이미지의 인스턴스가 생성되면 메모리가 쉽게 폭발합니다.

    회신하다
    0
  • 취소회신하다