Создание растрового изображения из холста с фиксированным разрешением и независимо от устройства - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы динамически создавать Bitmap, который будет сохранен в файл и использован позже как Instagram Story. Предполагается, что растровое изображение имеет фиксированное разрешение 1080x1920 и не зависит от текущего устройства.

На это растровое изображение я хотел бы поместить загруженное изображение и текст. Это будет примерно так:

val bitmap = Bitmap.createBitmap(1080, 1920, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)

val imageBitmap = BitmapFactory.decodeFile("local-file.jpg")
val scaledBitmap = Bitmap.createScaledBitmap(imageBitmap, 1080, 1080, true)
canvas.drawBitmap(scaledBitmap, null, Rect(0, 0, 1080, 1080), null)
canvas.save()

val textPaint = TextPaint()
textPaint.textSize = 32f
textPaint.isAntiAlias = true

var loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do..."
var staticLayout = StaticLayout.Builder.obtain(
        loremIpsum, 0, loremIpsum.length, textPaint, 600).build()
canvas.translate(240f, 1200f);
staticLayout.draw(canvas)

canvas.restore()
canvas.save()

// bitmap.compress(...)

Итак, как добиться такого эффекта, чтобы быть независимым от устройства? Я хотел бы всегда создавать выходное изображение с постоянными размерами вложенных изображений и текста.

После дальнейшего исследования (я использовал проводник файлов устройства) похоже, что изображения правильно сохраняются в файловой системе, но после этого что-то ломается при публикации в Instagram. Может быть, Instagram каким-то образом снижает масштаб в зависимости от разрешения устройства ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...