java - 如何使用 Phonegap Android 截图插件旋转截图图像

标签 java android cordova plugins exif

我正在使用 Phonegap 2.20 Android 屏幕截图插件,它工作正常。现在我想保存旋转 270° 的图像 - 但我是 Java/Android 的新手,需要一些帮助:

我尝试如下重写EXIF数据

...

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
String filename = "Screenshot_" + dateFormat + ".png";
File f = new File(folder, filename); // System.currentTimeMillis()

//FileOutputStream fos = openFileOutput(f.getPath(), Context.MODE_PRIVATE);
FileOutputStream fos = new FileOutputStream(f);

// change image orientation to landscape                    
ExifInterface exif = new ExifInterface(filename);
exif.setAttribute(ExifInterface.TAG_ORIENTATION, "8");  // ExifInterface.ORIENTATION_ROTATE_270
exif.saveAttributes();

bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
//fos.close();

//Log.w(TAG, "TAG_ORIENTATION: " + exif.getAttribute(ExifInterface.TAG_ORIENTATION));

that.success(new PluginResult(PluginResult.Status.OK), id);

但它总是抛出错误

E/JHEAD(26853): Can't write back - didn't read all

所以我觉得我需要等到文件写完?有没有监听器或者回调或者s.l.t.?

最佳答案

您将遇到的第一个问题是 ExifInterface 只能读取 jpg 数据而不能读取 png 数据。其次,您可以在 exif header 中设置方向参数,但实际上不会旋转图像。它只是提示显示图像的程序如何正确显示它们。

关于java - 如何使用 Phonegap Android 截图插件旋转截图图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606822/

相关文章:

android - Cordova - ANDROID_HOME 未设置且 "android"命令不在您的 PATH 中。您必须至少满足以下条件之一

java - 未找到 rmic 错误类

java - 如何在Java中使用条形码?

android - 将 minSdkVersion(21) 更改为 (18) < 设备的 API (19) 但项目停止运行

CSS 媒体查询未检测到方向变化

javascript - WebRTC 是否适用于 phonegap/Cordova?

java - JPA查询问题

java - 如何在 Java 中读取和接受带有 name/id/title 的自定义 CLI 参数?

安卓应用下载文件

android - 在 Kotlin 中为 recyclerView 的 child 的 child 设置监听器