[Android] 이미지 편집: 둥근 이미지 만들기
또 하나는 재단을 통해서.
이곳의 커팅은 원도에 근거하여 우리 스스로 새로운bitmap을 생성하는 것을 말한다. 이때 그림의 목표 구역을 원각 국역으로 지정한다.
이런 방법은 새로운bitmap을 만들어야 하기 때문에 최소한 2배의 그림 메모리를 소모할 수 있다.다음은 코드의 의미를 분석해 봅시다. a. 먼저 지정된 넓이bitmap을 만들고 출력의 내용으로 b. 그리고 같은 크기의 직사각형을 만들고 캔버스로 그릴 때 원각 각도를 지정합니다.이렇게 천에 둥근 직사각형이 하나 생겼다.c. 마지막으로 붓의 커팅 방식을 Mode로 설정합니다.SRC_IN.원도를 화포에 겹치다.이렇게 출력된bitmap은 원도가 직사각형 국역 내의 내용이다.
/**
*
* @param bitmap
* @return
*/
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = 12;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
그럼 세 번째는 BitmapShader를 이용해서...
int widthLimit = 96;
int heightLimit = 96;
Bitmap bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.getResources(), imageId), 96,96, false);
BitmapShader shader;
shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
RectF rect = new RectF(0.0f, 0.0f, widthLimit, heightLimit);
// rect contains the bounds of the shape
// radius is the radius in pixels of the rounded corners
// paint contains the shader that will texture the shape
Bitmap output = Bitmap.createBitmap(widthLimit,
heightLimit, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
canvas.drawRoundRect(rect, 12, 12, paint);
//drawable = context.getResources().getDrawable(imageId);
//drawable = new BitmapDrawable(ImageUtil.drawImageDropShadow(tmp));
// Log.i(TAG, "======>>>>>> "+context.getPackageName() + " imageId:" + imageId);
// drawable = new BitmapDrawable(BitmapFactory.decodeResource(context.getResources(), imageId));
drawable = new BitmapDrawable(output);
bitmap.recycle();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.