0

Android 애플리케이션의 경우 폭 1029 * 높이 1029 픽셀 (이미지 중심 작물 허용) 크기의 이미지가 필요합니다. 원본 이미지 너비와 높이가 1029 픽셀보다 큽니다.너비가 1029 * 높이 1029 픽셀 인 Android 드로잉 이미지

나는 다음과 같은 것을 시도했다. 이미지 뷰에 이미지를 배치하고 비트 맵을 캡처했습니다. 다음 예외가 있습니다.

Bitmap too large to be uploaded into a texture (2322x4128, max=4096x4096) 

이것은 이미지보기의 레이아웃 디자인입니다.

<ImageView 
    android:id="@+id/iv_try1" 
    android:layout_width="425dp" 
    android:layout_height="425dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:scaleType="centerCrop" 
    android:contentDescription="@string/icd" /> 

(425dp는 1029 픽셀을 제공하지만 잘 모르겠습니다.)

다음 코드를 사용하여 이미지보기에서 비트 맵을 캡처했습니다.

Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), 
      Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
    v.draw(c); 
    // resultant bitmap is save into save in SDcard. 

너비 1029 * 높이 1029 픽셀 해상도의 이미지를 비트 맵으로 가져올 수 있습니까? 미리 감사드립니다.

답변

2

예외적으로 비트 맵이 너무 큽니다. 높이가 최대 값을 초과합니다. 당신이 할 수있는 비트 맵을 다운 스케일링하는 것입니다. 첫 번째 단계는

BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inJustDecodeBounds = true; 
BitmapFactory.decode*(..., o); 

inJustDecodeBounds = true을 설정하여 비트 맵의 ​​메타 정보를로드하는 것의 decode* 방법은 널 비트 맵을 반환 할 것입니다,하지만 BitmapFactory.Options 픽셀의 비트 맵의 ​​너비/높이를 포함합니다 . 이 두 가지를 알고 있다면 inSampleSize의 값을 계산하여 제약 조건 (1029 픽셀)에 가까운/height로 비트 맵의 ​​크기를 조정해야합니다. inSampleSize 값> 1로 설정된 경우

의 문서에서, 메모리를 절약하기 위해 더 작은 이미지를 반환 원본 이미지를 서브 샘플링하는 디코더를 요구한다. 샘플 크기는 이며 디코딩 된 비트 맵에있는 픽셀 하나에 해당하는 두 차원의 픽셀 수입니다. 예를 들어, inSampleSize == 4는 원본의 너비/높이의 1/4이고 픽셀의 1/16 인 이미지를 반환합니다. 상관 값 < = 1 주 1과 동일하게 처리하여 다음 디코더 (2)의 전력에 기초하여 최종 값을 사용하여, 다른 값이 2

가장 가까운 전원 내림 것