BitmapFactory无法解码图像

时间:2017-02-07 15:22:33

标签: android base64 android-bitmap fileoutputstream bitmapfactory

在Android的React Native应用程序中,我试图将一个图像(作为base64传递)写入文件系统,然后使用BitmapFactory对其进行解码。

为什么BitmapFactory在存储后使用(Base64.decode)后仍然无法解码图像?

错误:

  

无法解码位图:   文件:///data/data/com.reactnativeapp/files/rct-image-store/1

存储图像的自定义书写方法:

  @ReactMethod
  public void addImageFromBase64(String base64_image_data, Callback successCallback, Callback failureCallback){
    String imageStorageDir = this.reactContext.getApplicationContext().getFilesDir()+"/rct-image-store/";
    String file_uri = imageStorageDir+"1";
    try {
      File f = new File(imageStorageDir);
      if(!f.exists()) {
        f.mkdir();
      }
      FileOutputStream fos = new FileOutputStream(file_uri, false);
      byte[] decodedImage = Base64.decode(base64_image_data, Base64.DEFAULT);
      fos.write(decodedImage);
      fos.close();
      successCallback.invoke("file://"+file_uri);
    } catch (IOException ioe) {
      failureCallback.invoke("Failed to add image from base64String"+ioe.getMessage());
    } catch (Exception e) {
      failureCallback.invoke("Failed to add image from base64String"+e.getMessage());
    }
  }

缩短访问图片的方法(fullResolutionBitmapnull):

InputStream inputStream = mContext.getContentResolver().openInputStream(Uri.parse(uri));;
BitmapFactory.Options outOptions = new BitmapFactory.Options();
Bitmap fullResolutionBitmap = BitmapFactory.decodeStream(inputStream, null, outOptions);/// fullResolutionBitmap==null

这是图像,底部看起来被裁剪。由于原始图像和转换后的图像都具有灰色区域,因此问题似乎不在于图像的转换,而在于源(相机)。

原始图片:

Original image

转换图片:

Converted image

0 个答案:

没有答案