- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用过ExifInterface
在 Android 应用程序中用于获取图像的相机方向。我的代码完美适用于 Build.VERSION.SDK_INT < 24
。但是当构建版本大于或等于 24 时,它会在 android studio logcat 中发出警告并且无法正常工作。
这是我的 onActivityResult 方法的代码块:
if(requestCode == REQUEST_CAPTURE_IMG && resultCode == RESULT_OK) {
Log.d(TAG, "Inside camera operation");
int reqWidth = 480, reqHeight = 800;
try {
InputStream inStream = null;
try {
inStream = getContentResolver().openInputStream(imageUri);
//Decode image size
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(inStream, null, options);
inStream.close();
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
inStream = getContentResolver().openInputStream(imageUri);
CommonStaticClass.mImage = BitmapFactory.decodeStream(inStream, null, options);
ExifInterface exif = null;
try {
//File pictureFile = new File(imgDecodableString);
if (Build.VERSION.SDK_INT >= 24) {
exif = new ExifInterface(inStream);
Log.d("exif", "sdk 24");
}
else {
exif = new ExifInterface(imageUri.getPath());
}
} catch (IOException e) {
e.printStackTrace();
}
int orientation = ExifInterface.ORIENTATION_NORMAL;
if (exif != null)
orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
CommonStaticClass.mImage = rotateBitmap(CommonStaticClass.mImage, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
CommonStaticClass.mImage = rotateBitmap(CommonStaticClass.mImage, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
CommonStaticClass.mImage = rotateBitmap(CommonStaticClass.mImage, 270);
break;
}
inStream.close();
} catch (IOException e) {
//Toast.makeText(this, "IO exception", Toast.LENGTH_SHORT).show();
Toast.makeText(this, SelectSuitActivity.this.getString(R.string.wrong_msg), Toast.LENGTH_SHORT).show();
}
//CommonStaticClass.mImage = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(this, SelectSuitActivity.this.getString(R.string.wrong_msg), Toast.LENGTH_SHORT).show();
}
}
这是我从相机中选取图像时的 logcat 结果:
10-19 12:39:04.399 2912-2912/com.example.myapp I/ExifInterface_JNI: Corrupted image.
10-19 12:39:04.414 2912-2912/com.example.myapp W/ExifInterface: Invalid image: ExifInterface got an unsupported image format file(ExifInterface supports JPEG and some RAW image formats only) or a corrupted JPEG file to ExifInterface.
java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:270)
at android.media.ExifInterface.getJpegAttributes(ExifInterface.java:1834)
at android.media.ExifInterface.loadAttributes(ExifInterface.java:1475)
at android.media.ExifInterface.<init>(ExifInterface.java:1174)
at com.lostsym.founder.SelectSuitActivity.onActivityResult(SelectSuitActivity.java:621)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
如果有人能找出这里出了什么问题,那将会很有帮助。谢谢。
最佳答案
您可以在 BitmapFactory 使用 inStream 后使用它。这是不可能的。再次打开流。
关于android - ExifInterface 获取了不受支持的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46824415/
我的应用程序拍摄肖像照片。 在画廊里我看到了 但是当保存到我的服务器时,我看到它是横向的。 我检查了我的图像文件并得到了 ORIENTATION_ROTATE_90 这是什么意思? 我尝试将其设置为O
我用过ExifInterface在 Android 应用程序中用于获取图像的相机方向。我的代码完美适用于 Build.VERSION.SDK_INT = 24) {
我使用这段代码来获取有关 sdcard 中图像的信息, File file = (File) iterator.next(); ExifInterface ex
我正在尝试从画廊的图像中提取 Exif 数据,如下所示: @Override protected void onActivityResult(int requestCode, int resultCo
我想获取位图的方向。我使用这段代码: ExifInterface ei = new ExifInterface(photoPath); int orientation = ei.getAttribut
下面是我的代码- try { InputStream inputStream = getAssets().open("thumbnail.jpg"); exifInterface = new
当我将 picasso 从 2.5.2 升级到 2.71828 并执行 gradle sync 时,我看到了一个exif接口(interface)错误: 错误: Failed to resolve:
支持库版本 25.1.0 添加了一个新功能 ExifInterface,它向后移植了添加到 Android 7.1 中的 ExifInterface 的功能。 但是如何在不提供默认值的情况下检查特定文
我需要弄清楚如何从位图中获取方向。事情是 - 图像并不总是出现在设备上,所以我不能使用 ExifInterface 来获取方向信息。不知何故,它总是横向显示位图,长度和宽度属性对我帮助不大。 有谁知道
在尝试使用文件路径初始化 exif 接口(interface)实例时,我无法找出 ExifInterface 构造函数抛出的异常。 已更新请按要求查看下面的详细代码。 文件下载功能 public vo
Camera.Parameters 中的 setRotation 方法 并不适用于所有设备。有人建议手动更改EXIF信息来解决问题。你能给我一个简短的例子,说明如何使用 ExifInterface 设
我正在尝试将经纬度和其他数据写入自定义相机应用程序中 jpeg 的 Exif header 。通常,android 会自动使用光圈、ISO、快门速度等数据填充 header 。但是,当我手动添加创建一
我的问题是,在某些设备上,一些从图库中选取的图像在 ImageView 中旋转。我找到了很多使用ExifInterface来解决这个问题的资料,所以我尝试使用它。但是当我尝试使用图像路径创建 Exif
我正在尝试获取图像的方向(来自图库),但 ExifInterface 始终返回 0。这是代码: int orientation = exif.getAttributeInt(ExifInterface
我最近添加了 implementation 'com.google.android.play:core:1.6.4'作为我的 android 项目中的依赖项,现在 Intellij 提示 Progra
我一直在将图像上传到 FirebaseStorage,但在显示它们时,它们通常是错误的。我发现了可以确定图像方向并在必要时旋转和翻转图像的 ExifInterface。 在我的手机上从图库区域选择图像
我正在开发一个应用程序。我得到时间、日期、经度和纬度。 所有信息获取成功。 现在我想格式化从 ExifInterface.TAG_DATETIME 获得的日期和时间。 我该怎么做? 主 Activit
我在相机的 onActivityResult 上通过 bundle 传递位图。 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
我正在尝试使用 ExifInterface 更改 exif 标签。我使用 setAttribute() 并调用 saveAttributes()。标签暂时保存,下次旧值还在,没有更新.........
我正在尝试检查位图的方向并在需要时翻转它,但在应用代码时出现错误。这是我尝试使用 ExifInterface 翻转图像时的代码: @RequiresApi(api = Build.VERSION_CO
我是一名优秀的程序员,十分优秀!