마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹뷰 화면 캡쳐 질문입니다.

0 추천
안녕하세요.

 

웹뷰로 이미지를 로드시켜 나오는 화면을 캡쳐하여 Bitmap 으로 변환 후 이미지뷰에 적용시키고 싶은데요

 

이 방식을 쓰는 이유가 로드하는 이미지의 크기가 너무 커서 그렇습니다..

 

cache 방식을 해 보니 디바이스의 세로 크기 만큼 (한 화면)  밖에 캡쳐가 안되더라구요

 

Picture.capturePicture 를 사용하면 낮은 api 레벨에서는 잘 불러와지지만 그 이상에서는 안불러와집니다.

 

높은 api 레벨에서 높이가 긴 이미지를 불러오고 싶다면 어떤 식으로 해야할지 며칠 째 답을 찾고 있는데 잘 안나오네요.

 

해보셨거나 좋은 방법 있으시면 팁좀 주세요!

 

* 정리

 

이미지의 크기는 최소 세로가 10000px 이상인 이미지 입니다.

웹뷰로 로드 시 스크립트로 width=100%를 하면 자동 스케일링이 되어 가로 대비 세로가 알맞게 로드 됩니다.  (약 1300 / 13000 짜리 이미지를 웹뷰에 스크립트 width=100% 적용 시 디바이스 크기만큼의 가로 720 / 세로 7200 정도의 크기로 스케일링됩니다. 세로 스크롤이 매우 길겠죠?)

자동 스케일링 된 웹뷰 화면의 이미지를 캡쳐 합니다.

낮은 api 레벨에서는 Picture.capturePicture 를 사용하면 모든 스크롤 포함 이미지가 Bitmap 으로 저장 됨

높은 api 레벨에서는 안됨.

웹뷰의 cacheEnabled ? 를 걸면 화면에 보이는 한 화면만 캡쳐가 되므로 실패.

 

이후 방법 찾는중

 

도와주세요!
익명사용자 님이 2017년 8월 9일 질문

1개의 답변

0 추천

전체스크롤 비트맵을 가져와도 height가 10000px이상이라면 어떤 디바이스라도 설정된 maxheight 값을 넘기기 때문에 로드에 실패할 겁니다.

1.이미지를 나누어서 로드

or

2.웹뷰를 통해 보여주기

or 

3.하드웨어 렌더가 아닌 소프트웨어렌더링하기

<-이부분은 기기별로 차이가 심합니다.

익명사용자 님이 2017년 8월 9일 답변
아 웹뷰에서 이미지 캡쳐하면 스케일링 작업을 한번 더 합니다.

MaxHeight 값에 맞게요..

이미지를 나누어서 하는건 많은 양의 이미지를 사용하는앱이라 좀 불가능할 것 같아요.

웹뷰로 표시 하지 않는 이유는 이미지 변환 작업이 필요해서 이미지뷰로 변환을 해야 해서 그렇습니다.

웹뷰의 전체영역 캡쳐기능만 확인할 수 있다면 좋겠는데 예전 정보들밖에 없네요
...