TiffBitmapFactory 라이브러리 출처 : https://github.com/Beyka/Android-TiffBitmapFactory
GitHub - Beyka/Android-TiffBitmapFactory
Contribute to Beyka/Android-TiffBitmapFactory development by creating an account on GitHub.
github.com
TiffBitmapFactory 라이브러리를 이용하여 TIFF 이미지를 Bitmap으로 변환 방법을 찾던 중
decodeFileDescriptor 메서드를 이용하여 파일을 읽으려고 시도 시에
첫번째 입력 매개변수가 FileDescriptor가 아닌 Int 부분이었습니다 , 방법을 찾던 중 아래와 같은 방법을 찾았습니다.
FileDescriptor 클래스 private 접근 자 descriptor 필드 값을 Reflection으로 가져오도록 시도 하였습니다.
확장 메서드를 활용 하였습니다.
fun FileDescriptor.getFdFromDescriptor() : Int {
val methodName = this::getFdFromDescriptor.name
return try {
val field = FileDescriptor::class.java.getDeclaredField("descriptor")
field.isAccessible = true
field.getInt(this)
} catch(e: Exception) {
Log.d(methodName , e.message.toString())
}
}
사용 예시
for(i in 0 until pageCount) {
FileInputStream(tempFile).use {
fis ->
val nFd = fis.fd.getFdFromDescriptor()
options.inJustDecodeBounds = false
options.inDirectoryNumber = i // 페이지 번호
val bitmap = TiffBitmapFactory.decodeFileDescriptor(nFd, options)
bitmap?.let { bitmapList.add(it) }
}
}