下载SVG并转换为位图或可绘制



我的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;
}

相关内容

  • 没有找到相关文章

最新更新