立即(或几乎)旋转 Android 中的图像

Rotate an image in Android instantly (or almost)

我用代号一开发,知道如何旋转图像。

问题是在我的 Samsung Galaxy A20 (Android 10 ).

当我谈到旋转时,我总是指 90 度或 90 度的倍数的旋转。

我希望有更有效的方法来旋转高分辨率图像,例如通过让 GPU 而不是 CPU 来完成工作。这就是为什么我问你们 Android 程序员:你们有没有可以立即或几乎立即旋转高分辨率图像的代码?

关于代号一,对于那些不知道的人,可以使用原生Android代码,所以我才称呼你。

哪种图片类型?

如果是 EncodedImage 尝试首先将其制作成常规图像或至少 lock() 。 GC 可能会从 RAM 中清除图像,并且您会得到重复的解码周期。即使对于非常大的图像,在这样强大的设备上旋转 90 度也应该非常快。

所以这样的事情应该很快:

img.lock();
Image rotated; 
switch(degrees)) {
   case 90: 
      rotated = img.rotate90Degrees();
      break;
   case 180: 
      rotated = img.rotate180Degrees();
      break;
   case 270: 
      rotated = img.rotate270Degrees();
      break;
   default: 
      rotated = img.rotate(degrees);
      break;
}
img.unlock();

如果这需要很长时间才能确定占用 CPU 时间的确切方法,我建议对此进行基准测试。这应该都执行得非常快。