Android 图片和文本生成新的图片(Canvas)

编程入门 行业动态 更新时间:2024-10-09 10:23:18

Android 图片和文<a href=https://www.elefans.com/category/jswz/34/1737636.html style=本生成新的图片(Canvas)"/>

Android 图片和文本生成新的图片(Canvas)

一、需求描述

项目有个需求需要在全屏图片上展示文字并生成一个新的图片并分享出去,图片全屏,文字居中。

于是便想到了使用Canvas来直接进行绘制。

二、实现代码

    private fun createImg(imageView: ImageView, textView: TextView): Bitmap {//返回具有指定宽度和高度的可变位图val imageViewBitmap =Bitmap.createBitmap(imageView.width, imageView.height, Bitmap.Config.ARGB_8888)//使用指定的位图构造一个画布以绘制到其中。位图必须是可变的。val imageViewCanvas = Canvas(imageViewBitmap)//手动将此视图(及其所有子视图)渲染到给定的Canvas。imageView.draw(imageViewCanvas)val textViewText = textView.text.toString()val textViewTextSize = textView.textSizeval textViewTextColor = textView.currentTextColorval combinedBitmap =Bitmap.createBitmap(imageView.width, imageView.height, Bitmap.Config.ARGB_8888)val combinedCanvas = Canvas(combinedBitmap)//绘制指定的位图,其上角/左角位于(x,y),并由当前矩阵变换。combinedCanvas.drawBitmap(imageViewBitmap, 0f, 0f, null)val textPaint = TextPaint()textPaint.textSize = textViewTextSizetextPaint.color = textViewTextColorval maxWidth = 300f * textView.context.resources.displayMetrics.densityval textLayout = StaticLayout(textViewText,textPaint,maxWidth.toInt(),Layout.Alignment.ALIGN_CENTER,1.0f,0.0f,false)//文案居中val textY = (imageView.height - textLayout.height) / 2combinedCanvas.save()combinedCanvas.translate((imageView.width - maxWidth) / 2, textY.toFloat())//文本绘制到画布中去textLayout.draw(combinedCanvas)combinedCanvas.restore()return combinedBitmap}

具体原理在代码中注释了。

更多推荐

Android 图片和文本生成新的图片(Canvas)

本文发布于:2023-12-03 11:46:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1654996.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:本生   图片   和文   成新   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!