最近接到了一个比较特殊的需求,要把rn写好的图片提供给unity(unity需要的是个本地路径,这不坑死人吗。。。)
整体思路:1、拿到rn图片 ,桥接方式给Android ;2、Android拿到图片 转换成drawable
3、通过io的方式写入到本地,拿到路径,大体就是这样 先说第一部
rn拿到的图片 require出来的都是数字,这样是行不通的,我们可以用这个类resolveAssetSource()
代码
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
/**
*设置背景
*/
private setBackgroundImage = (mouthValue: any) => {
let imgbackground = resolveAssetSource(mouthValue)//mouthValue图片替换成require(’‘)图片路径
NativeModules.ObenAvatarView.setBackgroundImage(imgbackground);
}
Android端
@ReactMethod
public void setBackgroundImage(ReadableMap path){
String rnImageUri;
try {
rnImageUri = path.getString("uri");
Log.i("showRNImage", "uri : " +Environment.getExternalStorageDirectory().getAbsolutePath());
Drawable drawable = BitmapUtil.loadImage(rnImageUri);
} catch (Exception e) {
return;
}
}
这里您已经拿到Drawable了
BitmapUtil里面的代码
public class BitmapUtil {
private static final String FILE_SCHEME = "