如何快速实现Android头像裁剪?Glide Transformations之Crop系列转换API完全指南
2026/9/19 5:53:38 网站建设 项目流程

如何快速实现Android头像裁剪?Glide Transformations之Crop系列转换API完全指南

【免费下载链接】glide-transformationsAn Android transformation library providing a variety of image transformations for Glide.项目地址: https://gitcode.com/gh_mirrors/gl/glide-transformations

Glide Transformations 是一款流行的 Android 开源图片转换库,为 Glide 图片加载框架提供了即开即用的Crop 系列裁剪转换 API——圆形头像、正方形裁剪、带边框头像、圆角卡片等效果,一行代码即可实现,无需自己编写 Bitmap 裁剪逻辑,是新手做 Android 头像裁剪与图片缩略的首选工具。

Crop 系列解决了什么问题?

Android 应用中常见的图片需求:

  • 👤 用户头像:圆形、可能要带彩色边框
  • 📰 信息流缩略图:正方形或固定比例
  • 🎴 卡片/横幅:任意角度的圆角

传统做法需要自己加载 Bitmap、创建 Canvas、计算缩放比例并绘制,代码量大且容易出坑(内存回收、透明通道、缓存失效等)。而 Glide Transformations 把这些逻辑全部封装成了 Transformation 类,挂到 Glide 请求链上即可,且转换参数会自动参与磁盘缓存 Key 的计算,不同裁剪参数不会互相污染缓存。

快速上手:两步完成 Android 头像裁剪

第一步:在build.gradle中加入依赖:

implementation 'jp.wasabeef:glide-transformations:4.3.0'

第二步:在 Glide 加载请求中通过bitmapTransform挂载转换即可。官方示例工程位于 example/ 目录,其中 MainAdapter.kt 演示了每一种 Crop 转换的完整用法,非常适合边读边跑。

5 个 Crop 系列 API 全解析

1. CropTransformation:按指定尺寸精准裁剪

最灵活的一个,支持自定义输出宽高,并通过CropType枚举选择裁剪位置(TOPCENTERBOTTOM,默认居中),见 CropTransformation.java:

Glide.with(this).load(R.drawable.demo) .apply(RequestOptions.bitmapTransform( CropTransformation(300, 100, CropType.CENTER))) .into(imageView)

宽高传0时自动使用原图尺寸。它先按"等比放大覆盖"再按指定位置裁剪,因此任意比例的图片都能裁出目标宽高,不会拉伸变形。

2. CropSquareTransformation:一行代码正方形裁剪

信息流、瀑布流的正方形缩略图,用它最省事,无需传任何参数,见 CropSquareTransformation.java:

Glide.with(this).load(url) .apply(RequestOptions.bitmapTransform(CropSquareTransformation())) .into(imageView)

内部对图片做居中正方形中心裁剪(centerCrop),输出边长取容器宽高的较大值。

3. CropCircleTransformation:圆形头像

最经典的头像裁剪效果:

Glide.with(this).load(url) .apply(RequestOptions.bitmapTransform(CropCircleTransformation())) .into(imageView)

⚠️注意:该转换已被标记为@Deprecated,源码注释推荐使用 Glide 自带的RequestOptions#circleCrop()方法(见 CropCircleTransformation.java),新项目建议直接写.apply(RequestOptions.circleCrop()),效果相同。

4. CropCircleWithBorderTransformation:带边框的圆形头像

用户头像加一圈品牌色边框的"招牌"效果,见 CropCircleWithBorderTransformation.java:

  • 无参构造:默认 4dp 宽度、黑色边框
  • 自定义构造:可指定边框宽度与颜色
Glide.with(this).load(url) .apply(RequestOptions.bitmapTransform( CropCircleWithBorderTransformation(Utils.toDp(4), Color.rgb(0, 145, 86)))) .into(imageView)

5. RoundedCornersTransformation:多模式圆角转换

圆角卡片、只裁顶部、对角双圆角等高级样式都能搞定,参数为radius(圆角半径)、margin(内缩边距)、cornerType(14 种圆角模式),见 RoundedCornersTransformation.java:

Glide.with(this).load(url) .apply(RequestOptions.bitmapTransform( RoundedCornersTransformation(16, 0, RoundedCornersTransformation.CornerType.ALL))) .into(imageView)

CornerType除了ALL,还支持TOPBOTTOMLEFTRIGHTDIAGONAL_FROM_TOP_LEFT等 14 种模式,可以精确控制哪几个角是圆的,适合做聊天气泡、异形卡片等设计。

进阶技巧:多转换链式组合

Glide 原生支持MultiTransformation,可以按顺序串联多个转换,例如"先裁剪、再圆角",官方写法见 README.md 的 Advanced Step 3:

val multi = MultiTransformation<Bitmap>( CropTransformation(300, 100, CropType.CENTER), RoundedCornersTransformation(16, 0)) Glide.with(this).load(url) .apply(RequestOptions.bitmapTransform(multi)) .into(imageView)

选型速查表与小贴士

使用场景推荐 API
用户圆形头像CropCircleWithBorderTransformation
正方形信息流缩略图CropSquareTransformation
自定义比例裁剪(横版/竖版)CropTransformation+CropType
卡片、气泡圆角RoundedCornersTransformation

💡小贴士

  • 库最低支持 minSdk 21,Glide 4.x 用户开箱即用
  • 若还想叠加模糊、灰度、GPU 滤镜等效果,完整 API 清单可参考 README.md 的 Transformations 章节
  • 所有转换类的源码都集中在 transformations/src/main/java/jp/wasabeef/glide/transformations/ 目录下,每个文件都不长,值得通读一遍

掌握以上 5 个 Crop 系列 API,Android 头像裁剪、缩略图、圆角卡片等 90% 的图片裁剪需求都能一行代码优雅解决。

【免费下载链接】glide-transformationsAn Android transformation library providing a variety of image transformations for Glide.项目地址: https://gitcode.com/gh_mirrors/gl/glide-transformations

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询