Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中使用毕加索从图像读取EXIF数据_Java_Android_Picasso_Android Image_Exif - Fatal编程技术网

Java 在android中使用毕加索从图像读取EXIF数据

Java 在android中使用毕加索从图像读取EXIF数据,java,android,picasso,android-image,exif,Java,Android,Picasso,Android Image,Exif,我有以下代码从URL下载图像并在imageView中显示: Picasso.with(getActivity()) .load(mImagesUrls[mPosition]) .resize(500, 500) .centerCrop() .into(mSlideImage); 但除了显示图像,我还需要检索一些EXIF数据。通过谷歌搜索如何为android实现这一点,我找到了“ExiFinInterface”类,但

我有以下代码从URL下载图像并在imageView中显示:

Picasso.with(getActivity())
          .load(mImagesUrls[mPosition])
          .resize(500, 500)
          .centerCrop()
          .into(mSlideImage);
但除了显示图像,我还需要检索一些EXIF数据。通过谷歌搜索如何为android实现这一点,我找到了“ExiFinInterface”类,但其构造函数如下所示:

  • ExiFinInterface(字符串文件名)
    • 从指定的图像文件读取Exif标记
  • ExiFinInterface(文件描述符文件描述符)
    • 从指定的图像文件描述符读取Exif标记
  • ExiFinInterface(InputStream InputStream)
    • 从指定的图像输入流读取Exif标记

  • 如何获得这些构造函数所需的任何参数?我在毕加索身上所能找到的只是一种将图像加载为位图的方法,它似乎不支持EXIF数据。

    我不知道它是否有帮助,但我举了一个例子,在我的例子中,它是可行的,但它只是一个例子:

    public void transformPicture(final File file, final OnImageReady onImageReady) {
    float rotation = 0;
    try {
        Uri uri = Uri.fromFile(file);
        ExifInterface exifInterface = new ExifInterface(uri.getPath());
        int orientation = exifInterface.getAttributeInt(TAG_ORIENTATION, ORIENTATION_NORMAL);
        switch (orientation){
        case ExifInterface.ORIENTATION_ROTATE_90: {
            rotation = -90f;
            break;
        }
        case ExifInterface.ORIENTATION_ROTATE_180: {
            rotation = -180f;
            break;
        }
        case ExifInterface.ORIENTATION_ROTATE_270: {
            rotation = 90f;
            break;
        }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    Picasso.get().load(file)
        .resize(getTargetMaxSize(), getTargetMaxSize())
        .centerInside()
        .rotate(rotation)
        .into(myView);
    }
    
    请记住,您只能从文件中读取exif,而不能从网络中读取。 也可以看到

    您可以通过以下方式获得ExiFinInterface:

    String fileName = "/path/file.any";
    ExifInterface exifInterface1 = new ExifInterface(fileName);
    
    FileInputStream fis = new FileInputStream(new File(fileName));
    ExifInterface exifInterface3 = new ExifInterface(fis);
    

    我也有同样的问题,你有解决办法吗?遗憾的是,没有,我从来没有抽出时间来解决这个问题。这个项目被放弃了。