Android矩阵Matrix在1张宽平大Bitmap批量绘制N个小Bitmap,Kotlin(1) ...

打印 上一主题 下一主题

主题 1585|帖子 1585|积分 4755

Android矩阵Matrix在1张宽平大Bitmap批量绘制N个小Bitmap,Kotlin(1)




  1. import android.graphics.Bitmap
  2. import android.graphics.BitmapFactory
  3. import android.graphics.Canvas
  4. import android.graphics.Color
  5. import android.graphics.Matrix
  6. import android.graphics.Paint
  7. import android.graphics.RectF
  8. import android.os.Bundle
  9. import android.widget.ImageView
  10. import androidx.appcompat.app.AppCompatActivity
  11. class MainActivity : AppCompatActivity() {
  12.     companion object {
  13.         const val TAG = "fly"
  14.         const val IMG_SIZE = 200
  15.         const val IMG_COUNT = 5
  16.     }
  17.     override fun onCreate(savedInstanceState: Bundle?) {
  18.         super.onCreate(savedInstanceState)
  19.         setContentView(R.layout.activity_main)
  20.         val image5 = findViewById<ImageView>(R.id.image5)
  21.         myDrawMultiBitmap(image5)
  22.     }
  23.     private fun myDrawMultiBitmap(imageView: ImageView) {
  24.         imageView.scaleType = ImageView.ScaleType.CENTER_CROP
  25.         val options = BitmapFactory.Options()
  26.         options.outWidth = IMG_SIZE
  27.         options.outHeight = IMG_SIZE
  28.         options.inPreferredConfig = Bitmap.Config.RGB_565
  29.         val bitmaps = ArrayList<Bitmap>()
  30.         for (i in 0 until IMG_COUNT) {
  31.             if (i % 2 == 0) {
  32.                 val b = BitmapFactory.decodeResource(resources, R.mipmap.img, options)
  33.                 bitmaps.add(b)
  34.             } else {
  35.                 val b = BitmapFactory.decodeResource(resources, R.mipmap.pic, options)
  36.                 bitmaps.add(b)
  37.             }
  38.         }
  39.         val resultBitmap = Bitmap.createBitmap(IMG_SIZE * IMG_COUNT, IMG_SIZE, Bitmap.Config.RGB_565)
  40.         val canvas = Canvas(resultBitmap)
  41.         canvas.drawColor(Color.LTGRAY)
  42.         bitmaps.forEachIndexed { index, bitmap ->
  43.             val w = bitmap.width
  44.             val h = bitmap.height
  45.             val srcRct = RectF(0f, 0f, w.toFloat(), h.toFloat())
  46.             val dstRctLeft = index * IMG_SIZE.toFloat()
  47.             val dstRct = RectF(dstRctLeft, 0f, dstRctLeft + IMG_SIZE, IMG_SIZE.toFloat())
  48.             val paint = Paint()
  49.             if (index % 2 == 0) {
  50.                 paint.color = Color.RED
  51.             } else {
  52.                 paint.color = Color.BLUE
  53.             }
  54.             canvas.drawRect(dstRct, paint)
  55.             
  56.             val mx = Matrix()
  57.             mx.setRectToRect(srcRct, dstRct, Matrix.ScaleToFit.CENTER)
  58.             canvas.drawBitmap(bitmap, mx, null)
  59.         }
  60.         imageView.setImageBitmap(resultBitmap)
  61.     }
  62. }
复制代码





遗留题目,需要把BitmapFactory解码出来的Bitmap最终以中心缩放格式绘制到大宽平Bitmap上。这里没有实现中心缩放centerCrop。




Android矩阵Matrix实现Glide图像fitCenter转换为centerCrop,Kotlin-CSDN博客文章欣赏阅读551次,点赞12次,收藏12次。Android拼接合并图片生发展图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生发展图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。基础上,把剪切的区域从矩形Rect变为圆形的Path,当手指在上面的ImageView移动时候,下面同等大小对应的坐标区域表现“剪切”出来的圆形图。
https://zhangphil.blog.csdn.net/article/details/144183165

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表