티스토리 뷰
반응형
[Android] Bitmap 크기 조절 / 겹치기(합치기) / 잘라내기
Android Bitmap resize, overlay, crop, scale
Drawable을 Bitmap으로 가져오기
1 2 3 | public static Bitmap getOverlayBitmap(Context context) { return BitmapFactory.decodeResource(context.getResources(), R.drawable.dwfox); } | cs |
Bitmap 이미지 크기 조절
가로길이를 200으로 맞춰 이미지 크기를 조절해주기
1 2 3 4 5 6 7 8 9 10 11 12 13 | static public Bitmap resizeBitmap(Bitmap original) { int resizeWidth = 200; double aspectRatio = (double) original.getHeight() / (double) original.getWidth(); int targetHeight = (int) (resizeWidth * aspectRatio); Bitmap result = Bitmap.createScaledBitmap(original, resizeWidth, targetHeight, false); if (result != original) { original.recycle(); } return result; } | cs |
Bitmap 이미지 잘라내기
1 2 3 4 5 6 7 8 9 10 11 | static public Bitmap cropBitmap(Bitmap original) { Bitmap result = Bitmap.createBitmap(original , original.getWidth() / 4 //X 시작위치 (원본의 4/1지점) , original.getHeight() / 4 //Y 시작위치 (원본의 4/1지점) , original.getWidth() / 2 // 넓이 (원본의 절반 크기) , original.getHeight() / 2); // 높이 (원본의 절반 크기) if (result != original) { original.recycle(); } return result; } | cs |
# 결과 화면
Bitmap 이미지 사이즈 줄이고 잘라서 겹치기(정사각형)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 static public Bitmap overlayBitmap(Bitmap original, Context context) {double aspectRatio = (double) original.getHeight() / (double) original.getWidth();int MAX_LENGTH = 120;int targetWidth, targetHeight;int startW = 0;int startH = 0;Bitmap originalResizeBmp;if (aspectRatio >= 1) { //세로가 긴 경우targetWidth = MAX_LENGTH;targetHeight = (int) (targetWidth * aspectRatio);startH = (targetHeight - targetWidth) / 2;} else { //가로가 긴 경우targetHeight = MAX_LENGTH;targetWidth = (int) (targetHeight / aspectRatio);startW = (targetWidth - targetHeight) / 2;}//하단 비트맵originalResizeBmp = Bitmap.createScaledBitmap(original, targetWidth, targetHeight, false);originalResizeBmp = originalResizeBmp.createBitmap(originalResizeBmp, startW, startH, (targetWidth > targetHeight ? targetHeight : targetWidth), (targetWidth > targetHeight ? targetHeight : targetWidth));//상단 비트맵Bitmap overlayBmp = Bitmap.createScaledBitmap(getOverlayBitmap(context), (targetWidth > targetHeight ? targetHeight : targetWidth), (targetWidth > targetHeight ? targetHeight : targetWidth), false);//결과값 저장을 위한 BitmapBitmap resultOverlayBmp = Bitmap.createBitmap(originalResizeBmp.getWidth(), originalResizeBmp.getHeight(), originalResizeBmp.getConfig());//상단 비트맵에 알파값을 적용하기 위한 PaintPaint alphaPaint = new Paint();alphaPaint.setAlpha(125);//캔버스를 통해 비트맵을 겹치기한다.Canvas canvas = new Canvas(resultOverlayBmp);canvas.drawBitmap(originalResizeBmp, new Matrix(), null);canvas.drawBitmap(overlayBmp, new Matrix(), alphaPaint);if (originalResizeBmp != original) {original.recycle();}if (originalResizeBmp != resultOverlayBmp) {originalResizeBmp.recycle();}if (overlayBmp != resultOverlayBmp) {overlayBmp.recycle();}return resultOverlayBmp;}cs
# 결과화면
반응형
'Dev > Android' 카테고리의 다른 글
[Android] APK 파일 추출 / 디컴파일 / 분석 하기 (6) | 2016.09.20 |
---|---|
[Android] Android Studio Keystore 생성하기 (Command 생성방법 포함) (3) | 2016.08.26 |
[Android] 이미지 라이브러리 Picasso 사용하기 ( Using the image loader library Picasso) (1) | 2016.07.26 |
[Android Stuido] Android Studio Library Import ( 라이브러리 추가 ) 방법 (9) | 2016.06.21 |
[Android] ViewTreeObserver - 뷰의 위치(높이,넓이) 구하기, 레이아웃 그려지는 시점 알아내기 (5) | 2016.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 컵라면
- 생성
- 라멘
- Android Studio
- MongoDB
- 하카타
- Android Stuido
- Python
- 돈돈
- 에러
- 인스턴트
- Picasso
- Custom
- 안드로이드 스튜디오
- Android
- 일본
- 리뷰
- 편의점
- 후쿠오카
- 일식
- java
- library
- 설치
- jar
- 맛집
- 라면
- 직화
- GS25
- 예제
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함