Articles of exif

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 […]

Exif数据TAG_ORIENTATION始终为0

我需要知道图库中图像的方向(由相机拍摄)。 我最初的方法是使用适用于我的Droid 1的MediaStore.Images.Media.ORIENTATION。在HTC Thunderbolt上测试时,手机只能为该字段保存0。 然后我开始阅读exif数据: ExifInterface exifReader = new ExifInterface(mFilePath); exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); 这也为每个图像返回0。 任何人都有关于如何正确获取Android照片的方向的想法?

Android:从URI获取EXIF旋转

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