Articles of exif

如何在Android中将exif数据写入图像?

我正在尝试使用exif界面在Android应用程序中为捕获的图像编写User_Comment和TAG_GPS ,但由于某种原因,当我在图库中查看图像的详细信息时,标记似乎没有附加到图像上。 似乎可能没有将标签写入捕获的图像,因为文件路径可能是错误的。 我想这可能是因为我将标签写入了错误的图像路径。 有谁知道我的标签写入图像的方式是否有问题? 这是在@ Charlie的更改后保存exif数据的代码: private File getOutputPhotoFile() throws IOException { File directory = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), getPackageName()); if (!directory.exists()) { if (!directory.mkdirs()) { Log.e(TAG, “Failed to create storage directory.”); return null; } } String timeStamp = new SimpleDateFormat(“yyyMMdd_HHmmss”, Locale.ENGLISH).format(new Date()); File[] files = directory.listFiles(); File exifVar = new File(directory.getPath(), “IMG_” + timeStamp […]

将EXIF元数据写入Android中的图像

我想在图像中存储一些元数据。 我的相机应用程序给了我一个位图,我将其存储在存储(MediaStore)设备中。 除此之外,我想在其元数据中为图片添加一些标签。 我认为EXIF是一种很好的方法。 但我找不到关于如何做到这一点的好参考。 如果有一些工具可以在Android编程中完成此任务,请告诉我。 谢谢

JPEG文件中的EXIF数据

使用Android中的ExifInterface将自定义数据作为Exif data in a JPEG image file写入Exif data in a JPEG image file中 想在JPEG file write/add自定义tags/exif数据,如姓名,年龄等…现在我能够编写默认值,如Geo location data, attributes etc…但我可以用JPEG编写自定义数据使用ExifInterface (Android)图像 这是否可能或任何其他替代方案,以保持图像的这些缺乏信息

Android:将GPSTimeStamp放入jpg EXIF标签

我试图通过android将“GPSTimeStamp”设置为jpg的exif标签。 这篇文档非常缺乏: http://developer.android.com/reference/android/media/ExifInterface.html#TAG_GPS_TIMESTAMPtypes为String。 常数值:“GPSTimeStamp”。 但确切的格式是什么? 在这里: http : //www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GPS.html GPSTimeStamp:rational64u [3](写入时,如果存在则删除日期,如果包含时区,则将时间调整为UTC) 所以我需要一个3单元arrays的长值? 我不知道,该放什么。我已经获得了“此修复的UTC时间,自1970年1月1日起以毫秒为单位。” 通过location.gettime()。 http://developer.android.com/reference/android/location/Location.html#getTime%28%29 如果我将长值作为字符串写入时间戳并通过Linux上的“exif”检查exif标签,我会得到错误“denominator expected”。 所有使用hh:mm:ss或其他格式的实验都失败了。 在这里有点迷失。

Android Picasso自动旋转图像

我正在使用Picasso在我的应用程序中从Web加载图像。 我注意到有些图像显示旋转了90度,但是当我在浏览器中打开图像时,我看到它正确定位。 我假设这些图像有EXIF数据。 有没有办法指示毕加索忽略EXIF?

如何将EXIF元数据附加到Android中的序列化位图?

在Android中,当从手机上的照片解码位图时,原始中的EXIF数据会丢失。 我通过套接字将此Bitmap发送到我的服务器,并希望将丢失的EXIF数据重新附加到正在发送的数据。 我有一些代码从MediaStore加载一个Bitmap对象并将其压缩为一个字节数组,以准备通过套接字发送它: Bitmap bitmap = … ByteArrayOutputStream stream = new ByteArrayOutputStream(bitmap); bitmap.compress(CompressFormat.JPEG, 70, stream); byte[] input = stream.toByteArray(); 我想使用ExifInterface来获取SD卡上原始jpeg中的EXIF元数据,并以某种方式将其添加到传出的字节数组中,以便我能够在服务器上提取具有所有正确EXIF的jpeg (希望不在服务器上这样做)。 到目前为止,我设法使用ExifInterface读取所有EXIF数据: String path = … //bitmap file path ExifInterface exif = new ExifInterface(path); … = exif.getAttribute(…) 编辑:最理想的是,我想find一个不使用库的解决方案。 如果我可以获得包含EXIF的原始jpeg的字节数组的索引,并将这些字节前置/附加到由bitmap.compress(…)生成的字节数组中,那将是最好的。

如何在Android上的exif数据中保存GPS坐标?

我正在为我的JPEG图像写GPS坐标,并且坐标是正确的(正如我的logcat输出所示),但似乎它以某种方式被破坏了。 读取exif数据会产生空值,或者对于我的GPS: 512.976698 degrees, 512.976698 degrees 。 任何人都可以解释这个问题吗? 写它: try { ExifInterface exif = new ExifInterface(filename); exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, latitude); exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, longitude); exif.saveAttributes(); Log.e(“LATITUDE: “, latitude); Log.e(“LONGITUDE: “, longitude); } catch (IOException e) { e.printStackTrace(); } 并阅读它: try { ExifInterface exif = new ExifInterface(“/sdcard/globetrotter/mytags/”+ TAGS[position]); Log.e(“LATITUDE EXTRACTED”, exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)); Log.e(“LONGITUDE EXTRACTED”, exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)); } catch (IOException e) { e.printStackTrace(); […]

Android Save Image Exif信息在Marshmallow 6.0.1中出错

在我的自定义相机中,我需要保存捕获图像的方向。 此代码适用于其他Android版本。 但它不适用于6.0.1。 将属性保存到图像文件后,得到的结果是错误的。 try { exif = new ExifInterface(pictureFile.getAbsolutePath()); exif.setAttribute(ExifInterface.TAG_ORIENTATION, “” + orientation); exif.saveAttributes(); } catch (IOException e) { e.printStackTrace(); }

Android EXIF数据总是0,如何更改呢?

我有一个应用程序,使用本机Camera捕获照片,然后将它们上传到服务器。 我的问题是所有照片的EXIF方向值都为0,这会使显示器在其他地方混乱。 如何更改EXIF方向? 我不是在寻找一种方法来纠正每种情况,只需将其更改为不同的值。 我正在使用三星Galaxy Note 4 我尝试了这个在拍照前设置相机方向的解决方案: 设置Android Photo EXIF方向 Camera c = Camera.open(); c.setDisplayOrientation(90); Camera.Parameters params = mCamera.getParameters(); params.setRotation(0); // tried 0, 90, 180 c.setParameters(params); 但它不会影响生成的EXIF数据,它仍然始终为0 我也尝试了这些解决方案,在拍摄后旋转图像: EXIF方向标记值始终为0,用于使用肖像相机应用程序安卓图像 当旋转照片时,EXIF方向始终为0。 我还尝试直接设置EXIF数据: 如何在Android中进行位图压缩后保存Exif数据 private Camera.PictureCallback mPicture = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { final File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE, “”); try […]

关于如何从URI获取Exif数据的最终答案

这里已经讨论了很多问题,主要是不同的结果,并且由于API的变化和不同types的URI, 没有明确的答案 。 我自己没有答案,但让我们谈谈它。 ExifInterface有一个接受filePath构造函数。 这本身很烦人,因为现在不鼓励依赖路径 – 你应该使用Uri和ContentResolver 。 好。 我们的Uri名为uri可以从onActivityResult的意图中检索出来(如果您使用ACTION_GET_CONTENT从图库中选择图片),或者可以是我们之前拥有的Uri (如果您从相机中选择图片并调用intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) )。 API <19 我们的uri可以有两种不同的模式: 来自相机的Uris大多数都有一个file:// schema。 那些很容易治疗,因为他们坚持这条道路。 你可以调用new ExifInterface(uri.getPath()) ,你就完成了。 来自画廊或其他内容提供商的Uris通常有一个content://界面。 我个人不知道那是什么,但让我发疯。 据我所知,第二种情况应该使用Context.getContentResolver()获得的ContentResolver 。 以下适用于我测试的所有应用程序,无论如何: public static ExifInterface getPictureData(Context context, Uri uri) { String[] uriParts = uri.toString().split(“:”); String path = null; if (uriParts[0].equals(“content”)) { // we can use ContentResolver. // let’s query […]