반응형
1. Bitmap
안드로이드에서 지원하는 이미지 포맷이다.
안드로이드는 이미지파일이나 메모리를 통해 Bitmap 파일을 다룰 수 있다.
Bitmap을 통하여 이미지를 자르거나 편집, 파일형 변환을 통해 적절하게 사용처에 맞게 사용할 수 있다.
Code
Bitmap BitmapFactory.decodeFile(String pathName, BitmapFactory.Options opts);
Bitmap BitmapFactory.decodeByteArray(byte[] data, int offset, int length, BitmapFactory.Options opts)
기본적으로 Bitmap은 사용시 메모리를 많이 할당하므로 다음과 같이 이미지 파일 크기를 줄여 사용한다
public static
int calculateInSampleSize( BitmapFactory.Options options, int reqWidth, int reqHeight)
{
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height / 2;
final int halfWidth = width / 2;
// Calculate the largest inSampleSize value that is a power of 2 and keeps both
// height and width larger than the requested height and width.
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
public static
Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
2. Canvas
캔버스는 비트맵을 받아와 그 위에 그림을 그릴 수 있게 해준다
쉽게말해 도화지 개념으로 생각하면 된다
Code
Bitmap bitmap = Bitmap.createBitmap(800,800, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
3. Paint
캔버스에 그림을 그릴 수 있게 해준다
(1) 생성자
Code
Paint paint = new Paint();
(2) 점 그리기
Code
// 색
paint.setColor(Color.RED);
// 굵기
paint.setStrokeWidth(30f);
// 좌표 표시
canvas.drawPoint(360, 640, paint);
(3) 사각형 그리기
// 색
paint.setColor(Color.RED);
// 좌표 표시
canvas.drawRect(160, 140, 360, 640, paint);
//RectF 사용
// 색
paint.setColor(Color.RED);
// 좌표로 표시
RectF rect = new RectF();
rect.set(160, 140, 360, 640);
canvas.drawRect(rect, paint);
(4) 원 그리기
// 색
paint.setColor(Color.RED);
// 좌표 표시
RectF rect = new RectF();
rect.set(160, 140, 360, 640);
// 원 그리기
canvas.drawArc(rect, 0, 360, true, paint);
// Rectf 사용
// 색
paint.setColor(Color.RED);
// 좌표 표시
RectF rect = new RectF();
rect.set(160, 140, 360, 340);
// 원 그리기
canvas.drawArc(rect, 0, 360, true, paint);
//canvas.drawArc(rect, 0, 90, true, paint); 1/4만 그리기
//canvas.drawArc(rect, 0, 180, true, paint); 1/2만 그리기
//canvas.drawArc(rect, 90, 180, true, paint); 1/2만 그린 것에서 1/4만 그리기
4. Drawable
이미지 파일(jpg, png 등)뿐만 아니라 그래픽을 어떻게 표현할 지를 xml파일을 통해 만들 수 있다.
보통은 이미지 파일을 drawable 패키지 폴더에 넣고 xml파일을 통해 커스텀 하여 사용한다
Reference
반응형
'Android > Android Java' 카테고리의 다른 글
[Android Java] Bitmap 이미지 원형으로 자르기 (0) | 2023.11.02 |
---|---|
[Android Java] Bitmap을 Drawable로, Drawable을 Bitmap으로 변환 (2) | 2023.11.02 |
[Android Java] Rect 좌표계 (0) | 2023.11.01 |
[Android Java] Matcher, Pattern 정규식 (1) | 2023.10.30 |
[Android Java] StringBuffer (0) | 2023.10.30 |