2012-04-29 2 views
5

저는 현재 비트 맵을 png 파일에 쓰고 있는데, 다시 비트 맵으로 읽어들입니다. 필자는 쓰기와 읽기 속도를 향상시킬 수있는 방법을 찾고 있습니다. 이미지를 편집하려면 다시 읽어야하므로 이미지는 무손실이어야합니다.파일에서 /로 파일을 읽고 쓸 수있는 가장 빠른 방법은 무엇입니까?

최악의 성능을 보는 곳은 실제 BitmapFactory.decode(...)입니다.

몇 가지 질문 :
1. NDK를 사용하여 비트 맵 파일의 읽기/쓰기 할 수있는 빠른 해결책이 있습니까?
2. 비트 맵을 더 빠르게 디코딩 할 수있는 더 좋은 라이브러리가 있습니까?
3. 비트 맵을 저장하고 읽는 가장 좋은 방법은 무엇입니까?

+0

몇 가지 생각 : 1. ** 당신은 **에 쓰려고합니까 **? 2. 아마도 그렇지 않습니다. 디코딩은 매우 비쌉니다. 3. 많은 압축 솔루션이 있지만 개인적으로 9 패치가 좋습니다. – hwrdprkns

+0

필자의 질문에 대한 언급을 파일로 업데이트했습니다. 음, 9 패치는 확실히 작동하지 않을 것입니다. 이 이미지는 9 개의 패치가 적용되지 않는 도면입니다. 조금 더 빠르게 디코딩하는 NDK 라이브러리가 있어야합니까? : P – Jona

+0

어쨌든 미리 이미지에 대해 알지 못한다면 JPEG 이미지가 압축되어있는 것처럼 보일 것입니다. – hwrdprkns

답변

4

이미지를 파일에 읽고 쓰는 가장 좋은 방법은 가장 오래된 것 인 BitmapFactory을 사용하여 해결되었습니다. NDK를 사용하여 인코딩/디코딩을 시도했지만 실제로 차이를 만들지 않았습니다.

기본적으로 이미지를 편집 한 후에 품질을 잃고 싶지 않았기 때문에 사용할 형식이 무손실 PNG였습니다.

이 모든 주요 개념은 인코딩이 얼마나 오래 인코딩되었는지를 이해해야한다는 것이 었습니다. 이미지 크기에 따라 상위 300-600ms의 인코딩 번호와 디코딩은 약 10-23ms 정도로 빠릅니다.

난 그냥 난 인코딩이 필요한 이미지를 전달하고 사용자 경험에 영향을주지 않고 작업을 할 일꾼 스레드를 만든 모든 것을 이해 한 후. 이미지가 완전히 인코딩되고 파일로 저장되기 전에 이미지가 메모리에 캐시 된 상태로 유지되었습니다.

관련 문제