Android : 비트 맵 오버레이 - 비트 맵 / 드로우 오버 방법


Answers

다음과 같이 할 수 있습니다.

public void putOverlay(Bitmap bitmap, Bitmap overlay) {
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
    canvas.drawBitmap(overlay, 0, 0, paint);
} 

아이디어는 매우 간단합니다. 비트 맵을 캔버스에 연결하면 캔버스의 메서드 중 하나를 호출하여 비트 맵을 그릴 수 있습니다.

투명도가있는 비트 맵에 대해 작동합니다. 알파 채널이 있으면 비트 맵에 투명도가 적용됩니다. Bitmap.ConfigBitmap.Config . ARGB_8888을 사용하고 싶을 것입니다.

중요 : 드로잉을 수행 할 수있는 여러 가지 방법에 this Android 샘플을 살펴보십시오. 그것은 당신을 많이 도울 것입니다.

성능이 현명하므로 (메모리 와이즈, 정확히 말하면), 비트 맵은 단순히 네이티브 비트 맵을 래핑하기 때문에 사용하기에 가장 적합한 객체입니다. ImageView는 View의 하위 클래스이며 BitmapDrawable은 비트 맵을 내부에 보유하지만 다른 많은 것들도 보유합니다. 그러나 이것은 지나치게 단순화 된 것입니다. 정답에 대한 실적 별 시나리오를 제안 할 수 있습니다.

Question

실제로 두 가지 질문이 있습니다.

  1. 비트 맵에 이미지를 그리거나 리소스로 비트 맵을 만든 다음 비트 맵 위에 그릴 수 있습니까? 성능 현명한 ... 어느 것이 더 낫습니까?
  2. 비트 맵 위에 투명하게 무언가를 그려보고 싶다면 어떻게해야할까요?
  3. 하나의 투명 비트 맵을 다른 비트 맵 위에 오버레이하려면 어떻게해야합니까?

긴 목록에 대한 미안하지만, 학습의 이익에, 나는 두 접근법을 탐험하고 싶습니다 ...




public static Bitmap createSingleImageFromMultipleImages(Bitmap firstImage, Bitmap secondImage, ImageView secondImageView){

    Bitmap result = Bitmap.createBitmap(firstImage.getWidth(), firstImage.getHeight(), firstImage.getConfig());
    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(firstImage, 0f, 0f, null);
    canvas.drawBitmap(secondImage, secondImageView.getX(), secondImageView.getY(), null);

    return result;
}



비트 맵을 얻는 것이 목적이라면, 이것은 매우 간단합니다 :

Canvas canvas = new Canvas();
canvas.setBitmap(image);
canvas.drawBitmap(image2, new Matrix(), null);

결국 이미지에는 image와 image2의 겹침이 포함됩니다.




Links