我的API正在返回SVG,我想将此SVG转换为位图,因此我可以将其用作Google Maps fragment上的PIN。
我发现https://github.com/japgolly/svg-android一旦我将罐子添加到我的应用程序中,我就开始遇到与字体有关的怪异运行时错误。显然,它过时了,无法使用任何用途。
我研究了Glide,因为有些人认为它可以与SVG一起使用。
我什至没有数据类型可以读取它,也无法将其转换为可用格式。
我要做的就是使用此响应body.bytestream((,然后将其变成一个位图。也就是说,Java解决方案也必须存在。
public Observable<Bitmap> fetchBitmap(String url) {
Observable<Bitmap> bitmapObservable = mGenericApiService.getBitmap(url)
.map(responseBody -> {
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(50, 50, conf);
//******** CODE HERE?? ********
return bitmap;
}).doOnError(getUniversalErrorHandler(mContext, mEventBus));
return bitmapObservable;
}
您所缺少的是下面的(未测试(:
public Observable<Bitmap> fetchBitmap(String url) {
Observable<Bitmap> bitmapObservable = mGenericApiService.getBitmap(url)
.map(responseBody -> {
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(50, 50, conf);
// Get a Canvas for the Bitmap
Canvas canvas = new Canvas(bitmap);
// Read the SVG file
SVG svg = SVGParser.getSVGFromInputStream(inputstream);
// There are other ways to read an SVG file. See the SVGParser class for the others.
// Get a Picture from the SVG and render it to the Canvas
canvas.drawPicture(SVG.getPicture());
return bitmap;
}).doOnError(getUniversalErrorHandler(mContext, mEventBus));
return bitmapObservable;
}