Decodifica image SVG a bitmap

Sto utilizzando Android Studio per convertire la mia image SVG in file XML. Funziona bene quando cerco di accedervi utilizzando R.drawable.svgimage, ma ora devo decodificare quella image a bitmap.

Ho provato quanto segue. Restituisce null per la bitmap.

  • Android - java.lang.SecurityException: Denial of Permission: avviare Intent
  • come mostrare i file disponibili in memory Android con Firemonkey
  • Come faccio a installare i file .apk nell'emulatore android?
  • Recuperare in reactjs il modo di lavoro nativo con ssl su android
  • Visualizzare il Logcat in Terminal?
  • Animazione di Fab su click (zoom in / out)
  • mResId = R.drawable.svgimage BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap bitmap = BitmapFactory.decodeResource( mContext.getResources(), mResId, options); 

  • Protezione "Risorse" di Android
  • Equalizzatore non sempre supportto, anche quando api> = 9?
  • La dimensione del carattere di TextView nell'applicazione Android cambia la modifica della dimensione del carattere dalle impostazioni nativi
  • Esport l'output HOCR per tesseract OCR in android
  • Android / Java - Come creare una connessione HTTPS?
  • Differenza di Android tra due date
  • 3 Solutions collect form web for “Decodifica image SVG a bitmap”

    Puoi utilizzare questa libreria SVG Android e usalo in questo modo:

     SVG svg = new SVGBuilder() .readFromResource(getResources(), R.raw.someSvgResource) // if svg in res/raw .readFromAsset(getAssets(), "somePicture.svg") // if svg in assets // .setWhiteMode(true) // draw fills in white, doesn't draw strokes // .setColorSwap(0xFF008800, 0xFF33AAFF) // swap a single colour // .setColorFilter(filter) // run through a colour filter // .set[Stroke|Fill]ColorFilter(filter) // apply a colour filter to only the stroke or fill .build(); 

    Dopo di che, convertire l'SVG in un disegno:

     // Draw onto a canvas canvas.drawPicture(svg.getPicture()); // Turn into a drawable Drawable drawable = svg.createDrawable(); 

    e poi, il disegno in una bitmap:

     Bitmap bitmapsvg = BitmapFactory.decodeResource(context.getResources(),drawable); 

    Il seguente codice funziona perfettamente: l'operazione R.drawable.ic_airport è la mia image svg memorizzata nella cartella disegnata.

      @TargetApi(Build.VERSION_CODES.LOLLIPOP) private static Bitmap getBitmap(VectorDrawable vectorDrawable) { Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); vectorDrawable.draw(canvas); Log.e(TAG, "getBitmap: 1"); return bitmap; } private static Bitmap getBitmap(Context context, int drawableId) { Log.e(TAG, "getBitmap: 2"); Drawable drawable = ContextCompat.getDrawable(context, drawableId); if (drawable instanceof BitmapDrawable) { return BitmapFactory.decodeResource(context.getResources(), drawableId); } else if (drawable instanceof VectorDrawable) { return getBitmap((VectorDrawable) drawable); } else { throw new IllegalArgumentException("unsupported drawable type"); } } Bitmap bitmap = getBitmap(getContext(), R.drawable.ic_airport); 

    prova questo,

     SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android); PictureDrawable pictureDrawable = svg.createPictureDrawable(); Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.