Articles of exif

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信息?

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

我想添加GPS数据,如经度和纬度到JPEG照片。 通过标签卡(NFC)捕获照片在logcat中可以显示正确的值,但是这些值不能写入jpg照片文件! 下面是我的代码:它用于保存jpg文件并调用下面的方法该方法用于将EXIF GPS参数添加到jpg中GPS参数(如经度和纬度)已在另一个活动中使用。 我在Firefox中使用EXIF Viewer来查看结果。 IOexception的位置是否重要? 以下是可能导致失败的重要日志猫日志: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照片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); } …和callback: private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { releaseCamera(); savePhoto(data); }; 照片拍摄正确,但我的问题是,EXIF数据显示方向设置为“图像方向:顶部,左手”,无论设备的方向如何,所以当我上传照片时,它看起来倒过来或旋转。 我是否真的需要手动捕捉设备方向(滚动,俯仰,方位angular)并自己写EXIF方向? 相机应用程序如何自动正确地写入这些数据? 有谁知道正确设置此属性的方法吗? 编辑:我不能使用屏幕方向作为活动被locking到肖像模式。

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

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

如何将ExifInterface与stream或URI一起使用

我正在编写一个应用程序,可以从Android的“通过共享”菜单发送照片URI。 你得到的URItypes是content://media/external/images/media/556但是ExifInterface一个标准的文件名。 那么如何读取该文件的Exif数据(我只想定位)呢? 这是我的(非工作)代码: Uri uri = (Uri)extras.getParcelable(Intent.EXTRA_STREAM); ContentResolver cr = getContentResolver(); InputStream is = cr.openInputStream(uri); Bitmap bm = BitmapFactory.decodeStream(is); // This line doesn't work: ExifInterface exif = new ExifInterface(uri.toString()); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1); 任何帮助(除了“你必须写你自己的ExifInterface类”)赞赏!

Android中写入/地理标记JPEG(EXIF数据)

我想做的事: 使用我自己的PictureActivity *拍摄照片并添加EXIF(地理标签)数据 *:实现SurfaceHolder.Callback并使用Camera 什么不工作: 添加EXIF GPS数据 我试过了: 使用ExifInterface并手动设置Camera.Parameters (具有设置GPS元数据的特定方法以及使用params.set(String, Value) )。 我使用FlickrJ将图片上传到Flickr(是的,我已经设置Flickr导入GPS数据 – 其他图片工作正常),但是这个工具也说在EXIF中没有GPS数据: http://正则expression式。信息/ exif.cgi 我错过了什么? (Android 2.2,HTC Desire) 编辑: – 相机设置为Geotag photos: On – 我已经尝试过硬编码的虚拟GPS位置 这里是手动设置参数的代码(在使用和不使用GPS数据的情况下尝试,也可以使用set(String, Value) ): @Override public void surfaceCreated(SurfaceHolder holder) { mCamera = Camera.open(); Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(p.getPreviewSize().width, p.getPreviewSize().height); Log.e("PictureActivity", "EXIF: "+AGlanceLocationListener.getLatitude()); p.removeGpsData(); p.setGpsLatitude( AGlanceLocationListener.getLatitude() ); p.setGpsLongitude( AGlanceLocationListener.getLongitude() […]