Android ExifInterface rotationDegrees图旋转角度,Kotlin
Kotlin
import android.media.ThumbnailUtils
import android.os.Bundle
import android.util.Log
import android.util.Size
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.exifinterface.media.ExifInterface
import java.io.File
class MainActivity : AppCompatActivity() {
companion object {
const val TAG = "fly/MainActivity"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val img1 = findViewById<ImageView>(R.id.img1)
val img2 = findViewById<ImageView>(R.id.img2)
val filePath = "/storage/emulated/0/data/heic/IMG_1587.HEIC"
var t = System.currentTimeMillis()
val bmp1 = ThumbnailUtils.createImageThumbnail(File(filePath), Size(200, 200), null)
Log.d(TAG, "decodeFile 耗时=${System.currentTimeMillis() - t}ms")
img1.setImageBitmap(bmp1)
img2.setImageBitmap(bmp1)
t = System.currentTimeMillis()
val exifInterface = ExifInterface(filePath)
Log.d(TAG, "rotationDegrees=${exifInterface.rotationDegrees} 耗时=${System.currentTimeMillis() - t}ms")
val degree = exifInterface.rotationDegrees * (-1f)
if (degree != 0f) {
img2.rotation = degree
}
}
}
注意:
val exifInterface = ExifInterface(filePath)
最终是要FileInputStream读文件,这是一个耗时IO,通常需要几十ms以上,有一定性能开销。