2013-09-02 2 views
2

다음 방법을 사용하여 Android에서 이미지 크기를 조정합니다.Android에서 이미지 크기 조정

public Bitmap resize(Bitmap img, int Width, int Height) { 

    int width = img.getWidth();  
    int height = img.getHeight(); 
    int newWidth = (int) Width; 
    int newHeight = (int) Height; 

    // calculate the scale - in this case = 0.4f 
    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 

    // createa matrix for the manipulation 
    Matrix matrix = new Matrix(); 

    // resize the bit map 
    matrix.postScale(scaleWidth, scaleHeight); 

    // rotate the Bitmap 
    //matrix.postRotate(45); 

    // recreate the new Bitmap 
    Bitmap resizedBitmap = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true); 

    return resizedBitmap; 
} 

대부분의 Android 기기에서 정상적으로 작동합니다. 그러나 일부 장치에서는 크기가 조정 된 이미지가 표시되지 않습니다. 어떻게 해결할 수 있을까요?

+0

정적 이미지 또는 서버 이미지에 이것을 호출 하시겠습니까 ?? – Piyush

+1

좋은 시작을 한 것처럼 들리 네! 비트 맵이 어떻게 보이는지/보이지 않는지에 대해 좀 더 정확하게 표현할 수 있습니까? 예 : 이미지 뷰, 드로어 블 또는 캔버스에 직접 그려지는 것입니까? – Tom

+3

이미지가 표시되지 않는다는 것은 무엇을 의미합니까? 또한 두 비트 맵의 ​​밀도가 동일하게 설정되어 있습니까? –

답변

0

대부분의 경우 "일부 장치"에서 요청한 너비와 높이에 따라 크기가 조정 된 비트 맵을 만들 메모리가 부족합니다. 이미지가 표시되지 않을 때 resizedBitmapnull 일 경우 (디버거에서) 확인하십시오.

+0

크기가 조정 된 후 이미지가 null이 아닙니다. – user2740092

1

당신은 여기

Bitmap bitmap = Bitmap.createScaledBitmap(b, width, height, true); 

, 폭과 프로그래밍 화면 크기를 읽고, 다른 장치에 대한 장치의 화면 크기에 따라 제공 할 수있는 높이로 축소 된 비트 맵을 만들 수 있습니다. Here은 장치의 화면 크기를 프로그래밍 방식으로 읽는 방법입니다.

+0

장치의 화면 크기를 가져 오는 데 문제가 없습니다. – user2740092