2012-05-15 3 views
2

크기 4022 (너비) x 3779 (너비)의 차트의 상대적 레이아웃을 동적으로 만들었습니다. 그러나 차트는 50-100 Textviews만으로 구성되므로 결과 .png가 작습니다. 이것은 차트를 캡처하는 데 사용하는 간단한 코드입니다.간단한 큰보기를 비트 맵에 저장

// chart_container was built dynamically before calling this function: 
    public void saveBitmap(RelativeLayout chart_container) { 
     int scale_ratio = 2; 
     int chartWidth = chart_container.getWidth(); 
     int chartHeight = chart_container.getHeight(); 
     Log.i(TAG, "orignal width:" + chartWidth + ", original height: " + chartHeight); 
     Bitmap mBitmap = Bitmap.createBitmap(chartWidth/scale_ratio, chartHeight/scale_ratio, Bitmap.Config.ARGB_8888); // crashes when scale_ratio is 1 
     Canvas mCanvas = new Canvas(mBitmap); 
     chart_container.draw(mCanvas); 
     out = new FileOutputStream("/data/data/package/chart.jpeg"); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
     out.flush(); 
     out.close(); 
    } 

로그 캣 출력 :

orignal width:4022, original height: 3779

은 "scale_ratio는"2, 차트의 왼쪽 상단 분기가 성공적으로 저장됩니다. 파일 크기는 22k에 불과합니다. 은 "scale_ratio는"한 때, 그러나 앱은 라인 "createBitmap"로 인해 메모리가 충돌 : 전체 차트를 저장하는 좋은 방법은

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

있습니까? 당신의 도움은 대단히 감사합니다 !!!

업데이트 : 에뮬레이터 VM 힙 크기를 10 배 늘려서이 문제를 해결했습니다. 이제 완전한 차트를 얻었습니다.

+0

안녕하세요, 문제를 해결해 주셨습니다. 문제가 해결되면 해답을 답변으로 게시하고 가능하면 수락하고 제목을 '해결됨'으로 변경하지 마세요. – MByD

답변

0

에뮬레이터 VM 힙 크기를 10 배 늘려서이 문제를 해결했습니다. 이제 완전한 차트를 얻었습니다.

관련 문제