2012-10-06 5 views
2

Android 화면 캡처에 문제가 있습니다. 원본 이미지가 투명하지 않은 견고한 JPEG 파일 인 반면 캡처 된 이미지는 투명합니다! OS 버전이 다른 많은 장치에서 테스트를 해본 결과 모든 전화기에서 문제가 지속됩니다. 여기 내 화면 캡처를위한 코드도 최종 출력레이아웃 스크린 샷을 캡처 한 후 ImageView가 투명합니다.

코드 :

final Bitmap rawBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
final Canvas canvas = new Canvas(rawBitmap); 
rendererView.layout(0, 0, width, height); 
rendererView.draw(canvas); 
rawBitmap.compress(CompressFormat.PNG, 100, new FileOutputStream("/sdcard/test" + System.currentTimeMillis() + ".png")); 

결과 :

enter image description here

+0

장치 os 버전의 세부 정보를 제공하십시오. – Siddharth

+0

나는 문제가 모든 OS 버전과 모든 제조 및 브랜드에서 지속된다고 생각합니다! 응용 프로그램은 2.1, 2.2, 4.0, 4.1 및 HTC, 삼성, 소니 에릭슨 – Behnam

+0

에서 테스트했습니다. 'CompressFormat.JPEG' (투명도가 제거 될 것입니다)에 저장하려고합니다. 또한 어떤 종류의 객체가'rendererView'입니까? – ALiGOTec

답변

2

문제가 해결되었습니다. 이미지 소스를 ImageView에로드 할 때 BitmapFactory 옵션에 잘못된 설정을 사용했습니다.

강령 (전후) :

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inDither = false; 
    options.inPurgeable = true; 
    options.inInputShareable = true; 
    //options.inPreferredConfig = Config.ARGB_4444; //WRONG 
    options.inPreferredConfig = Config.ARGB_8888; //CORRECT 
    bitmap = BitmapFactory.decodeFile(result.filePath(), options); 

감사합니다 모두.

0
내가 createBitmap에서 Bitmap.Config.RGB_565을 (시도 할 것이다

)

+0

실제로 투명 픽셀을 유지하려면 알파가 필요합니다. 알파가없고 품질을 떨어 뜨리는 RGB_565는 좋은 대답이 아닙니다. – Behnam

관련 문제