Articles of exif

无法使用Android中的ExifInterface设置Date Taken / DateTime标记

我已经研究并尝试了很多选项来尝试让它发挥作用,但不幸的是,我没有得到任何结果。 我想要做的是在Android应用程序中的JPEG的Exif数据中设置Date Taken标签(Tag_DateTime)。 我已经有了工作代码来设置Latitude和Longitute标签,但是在我的生活中不能得到Date taken标签来设置。 这是代码: SimpleDateFormat fmt_Exif = new SimpleDateFormat(“yyyy:MM:dd HH:mm:ss”); try { ExifInterface exif = new ExifInterface(filePhoto.getPath()); // Set and save the GPS and time data exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, strLat); exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, strLong); exif.setAttribute(ExifInterface.TAG_DATETIME, fmt_Exif.format(locLatestLocation.getTime())); exif.saveAttributes(); } catch (IOException e) { e.printStackTrace(); } locLatestLocation – 用于获取时间的位置(以毫秒为单位)。 fmt_Exif – SimpleDateFormat用于将毫秒时间格式化为TAG_DateTime Exif标记的正确格式。 strLat&strLong – 以正确的格式填充其他位置以设置纬度和经度标记。 我在某个post中读到标签需要以毫秒格式编写,所以试过这个也无济于事。 为了使用实际存储的内容确认我的格式,我从具有Date Taken标记的jpeg文件中读取并输出了未格式化的标记,但输出的格式与我写入标记的格式完全相同不工作 […]

ExifInterface JHEAD无法打开错误(android)

我试图从图库中选择和图像,并使用ExifInterface打印它的路径以及gps标签。 我正在使用nexus 4(kitkat 4.4.2)进行调试,我得到的图像路径是 / storage / emulated / 0 / DCIM / image_file_name但ExifInterface为所有标记返回null,logcat显示错误JHEAD无法打开’/ storage / emulated / 0 / DCIM / image_file_name’(应用程序不会崩溃)。 请帮忙。 主要活动代码: package com.example.images; import java.io.File; import java.io.IOException; import android.media.ExifInterface; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.ImageView; […]

ExifInterface不会更新exif标记

我正在尝试使用ExifInterface更改exif标签。 我使用setAttribute()并调用saveAttributes()。 标签暂时保存,然后下一次旧值仍然存在且尚未更新……………. 例: ExifInterface exifInterface = new ExifInterface(filePath); String o1 = exifInterface.readAttribute(TAG_ORIENTATION); //o1 is “0” exifInterface.setAttribute(TAG_ORIENTATION, “90”); exifInterface.saveAttributes(); String o2 = exifInterface.readAttribute(TAG_ORIENTATION); //o2 is “90” // relaunch app, read attribute for same photo String o3 = exifInterface.readAttribute(TAG_ORIENTATION); //o3 is “0” again, sould be “90”

如何从InputStream而不是File获取Exif数据?

我问这个的原因是因为文件选择器Intent的回调返回了一个Uri 。 通过Intent打开文件选择器: Intent intent = new Intent(); intent.setType(“image/*”); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, “Select Picture”), CHOOSE_IMAGE_REQUEST); 回电话: @Override public void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CHOOSE_IMAGE_REQUEST && resultCode == Activity.RESULT_OK) { if (data == null) { // Error return; } Uri fileUri = data.getData(); InputStream in = getContentResolver().openInputStream(fileUri); […]

使用ExifInterface设置图像方向

setRotation method不适用于所有设备。 有人建议手动更改EXIF信息以解决问题。 你能给我一个简短的例子来说明如何用ExifInterface设置exif信息,以这种方式将图像方向设置为肖像吗? private int savePicture(byte[] data) { File pictureFile = getOutputMediaFile(); if (pictureFile == null) return FILE_CREATION_ERROR; try { FileOutputStream fos = new FileOutputStream(pictureFile); fos.write(data); fos.close(); } catch (FileNotFoundException e) { return FILE_NOT_FOUND; } catch (IOException e) { return ACCESSING_FILE_ERROR; } return OKAY; } 我试过这个: try { ExifInterface exifi = new ExifInterface(pictureFile.getAbsolutePath()); exifi.setAttribute(ExifInterface.TAG_ORIENTATION, […]

Android中的条件编译?

Android有任何types的条件编译吗? 我不得不为Android 3(API 11)制作我的项目,因为ExifInterface在Android 2.3(API 10)中几乎没有任何有用的属性,尽管它出现在API 5(!! ??)中。 我不想将我的应用限制为ICS用户。 谢谢!

从图像中删除或更新exif缩略图

无论如何从图像中删除exif缩略图? 我在我的应用程序中裁剪图像并使用sanselan库复制所有exif数据无损。 之后,我相应地更新宽度/高度/旋转。 我找不到任何方法来更新exif缩略图或删除它,任何想法如何做到这一点?

Android:从URI获取EXIF轮换

我想找出一张图片的EXIF旋转。 当图片显示在图库中时,它不会旋转,但在使用EXIF信息’向左旋转’加载图像后,图片会旋转显示。 现在我想询问用户,他是否想要使用旋转的图像或原始图像。 我得到一个Uri到该方法并将其存储在Bitmap中 InputStream inputStream = PaintroidApplication.applicationContext.getContentResolver().openInputStream(bitmapUri); BitmapFactory.decodeStream(inputStream, null, options); inputStream.close(); 现在我想使用ExifInterface来确定旋转,但是ExifInterface需要一个路径: ExifInterface exif = new ExifInterface(bitmapUri.getPath()); rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 现在我的路径有问题,logcat显示以下消息: E / JHEAD:无法打开’/ document / image:15035′ 如何解决此问题或是否有其他解决方案来查找EXIF信息?

Android将EXIF GPS纬度和经度写入JPEG失败

我想在jpeg照片中添加经度和纬度等GPS数据。 通过标记卡(NFC)捕获照片在logcat中可以显示正确的值,但这些值无法写入jpg照片文件! 下面是我的代码:它用于获取保存的jpg文件并调用下面的方法该方法用于将EXIF GPS参数添加到jpg中经度和纬度等GPS参数已经在另一个活动中使用。 我在Firefox中使用EXIF Viewer来查看结果。 IOexception的位置是否重要? 以下是可能导致失败的重要日志cat日志:07-26 11:48:30.386:D / NativeNfcTag(195):标记丢失,重新启动轮询循环 public static void writeFile (File photo, double latitude, double longitude) throws IOException{ ExifInterface exif = null; try{ Log.v(“latiDouble”, “”+latitude); Log.v(“longiDouble”, “”+longitude); exif = new ExifInterface(photo.getCanonicalPath()); if (exif != null) { double latitu = latitude; double longitu = longitude; double alat = Math.abs(latitu); double along […]

设置Android Photo EXIF方向

我编写了一个以编程方式捕获照片的Android活动。 我想将图像保存为具有正确EXIF方向数据的JPEG(就像原生Android Camera应用程序自动执行一样)。 这是实际拍摄照片的方法(我删除了try / catch块): private void takePhoto() { camera = Camera.open(); SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0); camera.setPreviewTexture(dummySurfaceTexture); camera.startPreview(); camera.takePicture(null, null, jpgCallback); } …和回调: private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { releaseCamera(); savePhoto(data); }; 照片拍摄得当,但我的问题是EXIF数据显示方向设置为“图像方向:顶部,左手”,无论设备的方向如何,因此当我上传照片时,它会显示为颠倒或旋转。 我是否真的需要手动捕捉设备方向(滚动,俯仰,方位角)并自己编写EXIF方向? Camera应用程序如何自动正确写入此数据? 有谁知道正确设置此属性的方法? 编辑:我无法使用屏幕方向,因为活动被锁定为纵向模式。