Android 이미지 중첩 기능 구현

2202 단어 Android사진 중첩
며칠 전 이런 수요 에 부 딪 혀 QR 코드 를 포스터 한 장과 겹 쳐 합성 한 포스터 를 위 챗 에 공유 했다.경험 이 부족 하기 때문에 기능 을 실현 하 는 과정 에서 이런 저런 문제 에 부 딪 히 면 제 가 부 딪 힌 구 덩이 를 공유 하 겠 습 니 다.
그림 중첩 처리
처리 방향 은 새 캔버스 에 각각 두 장의 그림 을 그 리 는 것 이다.
        1.먼저 두 장의 그림 이 필요 하고 Bitmap 형식 으로 전환

Bitmapbg = ((BitmapDrawable) getResources().getDrawable(

 R.drawable.background)).getBitmap();

Bitmapfg = ((BitmapDrawable) getResources().getDrawable(

 R.drawable.foreground)).getBitmap();
        2.배경 그림 과 크기 가 일치 하 는 비트 맵 만 들 기

intbgWidth=bg.getWidth();

intbgHeight=bg.getHeight();

intfgWidth=fg.getWidth(); //     ,              
/*여 기 는 RGB 에 대해 자세히 설명 하지 않 습 니 다.565 와 RGB8888,RGB_6666 의 차이 점 은 제 가 나중에 위 챗 에 공유 하 는 과정 에서 사진 이 너무 큰 것 을 발견 하면 사진 을 최대한 작 게 만 들 었 기 때 문 입 니 다.특히 저 는 RGB 를 해 본 적 이 있 습 니 다.6666,getConfig()그림 의 인자 가 변 하지 않 았 음 을 발 견 했 습 니 다.원본 코드 를 보고 나 서 야 RGB 를 선택 하 더 라 도 알 수 있 습 니 다.6666,RGB 로 전 환 됩 니 다8888,화질 이 너무 비참 한 것 같 아서 구 글 은 RGB 를 포기 했다.6666 입 니 다*/

Bitmapnewbmp=Bitmap.createBitmap(bgWidth,bgHeight,Bitmap.Config.RGB_565);
         3.캔버스 를 새로 만 들 고 배경 그림 과 전경 도 를 그립 니 다.

Canvascv=newCanvas(newbmp);

//drawbginto

// 0,0      bg

cv.drawBitmap(bg,0,0,null);

//drawfginto

//    fg,         ,        

cv.drawBitmap(fg,(bgWidth-fgWidth)/2,bgHeight/4*3-500,null);
그림 압축 처리
위 챗 sdk 를 사용 하여 그림 을 공유 하 는 과정 에서 그림 이 너무 커서 위 챗 을 끌 어 올 리 는 데 실 패 했 습 니 다.처리 방향 은 원래 의 절반 으로 확대 하 는 것 입 니 다.그림 이 메모 리 를 차지 하 는 것 이 자 연 스 럽 게 줄 어 들 었 습 니 다.간단 하고 거 칠 지 않 습 니까?

Matrixmatrix=newMatrix();

matrix.setScale(0.5f,0.5f);

Bitmap compbmp=Bitmap.createBitmap(newbmp,0,0,newbmp.getWidth(),

newbmp.getHeight(),matrix,true);

최종 효과

위 에서 말 한 것 은 안 드 로 이 드 이미지 중첩 기능 코드 를 소개 해 드 렸 습 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기