2017-03-13 13 views
1

getDrawingCache() 메서드를 사용하여 뷰의 스크린 샷을 캡처하려고합니다. 그것은 비트 맵 그 비트 맵을 내가 응용 프로그램에서 볼 수있는 동일한 품질을 제공하지 않습니다. 아래는 내가 사용하는 코드입니다 :getDrawingCache 비트 맵의 ​​품질이 왜곡되었습니다.

view.buildDrawingCache(); 
Bitmap cacheBitmap = view.getDrawingCache(); 
ByteArrayOutputStream streamOut = new ByteArrayOutputStream(); 
cacheBitmap.compress(Bitmap.CompressFormat.PNG, 100, streamOut); 
byte[] bitmapDataArry = streamOut.toByteArray(); 

나는 이미 Google에서 얻은 것들을 몇 가지 시도했습니다. 이 improve quality of getdrawingcacheimprove quality of image처럼 그러나 여전히 순수한 이미지 품질을 얻지 못하고 있습니다. 아무도 품질을 잃지 않고 스크린 샷을 찍는 방법에 대해 다른 제안을 할 수 있습니까?

답변

0

작은 화면 장치에서 스크린 샷을 찍어서 그림 캐시가 작아서 스크린 샷 자체가 작지만 전화 화면 크기가 작아서 괜찮아 보입니다. 그런 다음 getDrawingCache에서 가져온이 이미지를 서버에 업로드 한 다음 고해상도 화면이있는 다른 장치에 표시하려고하면 품질이 떨어지고 픽셀이 생성됩니다. 이 경우 원본 이미지 또는 잘린 이미지를 표시하면 품질을 유지하는 데 도움이됩니다.

보기가 이전 캐시를 가져 오는 경우가 있습니다. 여기서 destroyDrawingCache()와 buildDrawingCache()를 수행 할 수 있습니다.

+0

그럼, 어떻게해야합니까? 왜냐하면 우리는 어떤 해상도의 장치 사용자가 사용하고 있는지를 식별하지 못하기 때문입니다. 화면 해상도에 의존하지 않고 스크린 샷을 찍을 수있는 방법이 있습니까? –