SVG в JPEG на Android

Знаете ли вы способ конвертировать SVG(векторное изображение) в JPG/JPEG/PNG (любой растровый формат) в режими оффлайн выполнения приложения на android?


Ответы (1 шт):

Автор решения: igo

VectorDrawable можно нарисовать на Canvas, Canvas можно сохранить как Bitmap, а Bitmap по сути растровое изображение.

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private static Bitmap getBitmap(Context context, int drawableId) {
    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");
    }
}

@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);
    return bitmap;
}

Из Bitmap в PNG

  bitmap.compress(Bitmap.CompressFormat.PNG, 100, someOutStream)

Еще есть вариант с SVG библиотеой под android https://github.com/japgolly/svg-android

→ Ссылка