logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Android - 이미지(비트맵) 리사이징

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

안드로이드에서 비트맵 리사이징이 필요한 이유는 몇가지가 있을 수 있는데,

- 이미지 사이즈가 너무 커서 줄여야 하는 경우
- 인텐트를 이용하여 주고 받을 때 데이터 사이즈가 커서 안되는 경우
- 기타 메모리 부족 문제

어쨌거나 안드로이드에서 비트맵 리사이징 하는 방법에는 아래 코드와 같이 하는 방법이 있다.


BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
Bitmap src = BitmapFactory.decodeFile("/sdcard/image.jpg", options);
Bitmap resized = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, true);

inSampleSize 값을 적절히 사용해도 되겠지만 특정 너비나 높이값에 맞추어야 할 경우도 있다.

아래 코드는 높이 118에 맞춰서(정확하게는 118 이하로) 리사이징 하는 방법이다.

 

Uri imgUri = data.getData();

Bitmap bitmap = Images.Media.getBitmap(getContentResolver(), imgUri);

int height = bitmap.getHeight();

int width = bitmap.getWidth();

// Toast.makeText(this, width + " , " + height, Toast.LENGTH_SHORT).show();

Bitmap resized = null;

while (height > 118) {

resized = Bitmap.createScaledBitmap(bitmap, (width * 118) / height, 118, true);

        height = resized.getHeight();

        width = resized.getWidth();

}

// Toast.makeText(this, width + " , " + height, Toast.LENGTH_SHORT).show();

coverImageView.setImageBitmap(resized);

 
TAG •