2013-06-20 3 views
-1

저는 고품질의 사진 (전문 DSLR에서 가져온 것)을 표시해야하는 Android 앱을 작성 중입니다. 문제는 갤러리에서 표시 할 수 없다는 것입니다.Android 이미지 뷰 이미지 품질 문제가 있습니까?

갤러리에서 먼저 사진을 선택합니다. 대상 그림은 2464 * 1632 JPEG, 대략 4.5M입니다.

그럼 난 그냥 800 * 600으로 압축하고 이미지 뷰에 표시해야합니다

image.setImageBitmap(this.bmp); 

것은 내가 폼 인터넷 (정말 품질이 낮은) 다운로드 한 다른 이미지를 테스트 한 것입니다, 그것은없이 작동 어떤 문제. 아무도 왜 그것이 표시 될 수 없는지 말해 줄 수 있습니까? 나는 정말로 appericiated 될 것이다

+0

무엇 작동하지 않는 어떻습니까? 당신은을 얻는 경우 오류, 그것을 게시 할 수 있습니까? – karl

+0

그냥 짓 눌린. 나는 왜 그것이 호감 몰라. 그녀의 사진은 괜찮지 만 갤러리에서 사진을 선택했을 때 클라이언트가 내게 준 사진을 골랐다. –

+0

'짓 눌린'이란 무엇을 의미합니까? – karl

답변

-1

큰 이미지는 제한된 메모리 때문에 취급하기가 까다 롭다.

  • 이 당신이 디스플레이의 크기로 그 여분의 픽셀
  • 디코드 이미지의 사용을 만들기 위해 핀치 줌 기능을 한 다음에 넣어 수 있습니다 (웹보기를 사용 : 당신은 몇 가지 선택 사항이 있습니다 이미지 뷰 BitmapOpts http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html을 사용하고 inSampleSize을 변경. 그것은 당신이 그와 함께 어려움을 겪고, 그래서 그냥 이명 령의 폭과 높이를 필요 createScaledBitmap 사용을 고려할 수 있습니다 보인다.
+0

1) WebView는 화질 제약 조건이 훨씬 더 큽니다. 일반적으로 메모리 품질이 떨어지면 이미지 품질이 저하되고 이미지를 멈추거나 감지 할 방법이 없습니다. 2) 'createScaledBitmap'은 소스 비트 맵을 사용하지만 흐름. 그는 BitmapFactory를 사용해야하며 샘플 크기를 자동 감지하지 않습니다. – Delyan

+0

비트 맵에 파일을로드 한 다음 'createScaledBitmap'을 사용하여 파일을로드하는 것을 방해하는 요소는 없습니다 (여기에서 효과적으로 복사하고 있음에도 불구하고). 'WebView'를 사용하면 이미지의 고해상도를 최대한 활용할 수 있습니다. 축소 된 이미지 버전보다 더 바람직 할 수 있습니다. 마지막으로 올바른 샘플 크기를 계산하여 이미지가 올바른 크기가되도록'BitmapFactory'에 전달할 수 있습니다. 이들 모두는 당신이 맘에 든 여부에 관계없이 유효한 옵션입니다. – Dororo

+0

* WebView에서 고해상도를 사용하지 않습니다. 꼬집음 - 확대 *는 이미지의 영역을 다시 디코딩하지 않으며 대신에 흐릿한 혼란을줍니다. 시도 해봐. 비트 맵에 파일을로드하지 못하게하는 이유는이 개체에 대해 4.5 메가 픽셀 * 4 바이트/픽셀 = 18M 크기입니다. 16M 힙이있는 장치가 있습니다. 무시 되더라도 나머지 앱에는 거의 호흡 여지가 없습니다. 그는 정확한 'inSampleSize'를 계산하고 있습니다. 당신이 그걸로 뭔가 잘못 볼 수 있다면, 그것을 밖으로 가리 킵니다; 그가 제출 한 코드를 완전히 무시해도 도움이되지 않습니다. – Delyan