在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());
}
}
缩短访问图片的方法(fullResolutionBitmap
为null
):
InputStream inputStream = mContext.getContentResolver().openInputStream(Uri.parse(uri));;
BitmapFactory.Options outOptions = new BitmapFactory.Options();
Bitmap fullResolutionBitmap = BitmapFactory.decodeStream(inputStream, null, outOptions);/// fullResolutionBitmap==null
这是图像,底部看起来被裁剪。由于原始图像和转换后的图像都具有灰色区域,因此问题似乎不在于图像的转换,而在于源(相机)。
原始图片:
转换图片: