广告
返回顶部
首页 > 资讯 > 精选 >Android如何实现图片生成卷角和圆角缩略图的方法
  • 665
分享到

Android如何实现图片生成卷角和圆角缩略图的方法

android 2023-05-30 18:05:47 665人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关Android如何实现图片生成卷角和圆角缩略图的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在 Android 的一些界面中,有时候我们需要为一副图片生成大小为 n * n 的缩略

这篇文章给大家分享的是有关Android如何实现图片生成卷角和圆角缩略图的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在 Android 的一些界面中,有时候我们需要为一副图片生成大小为 n * n 的缩略图,有时候需要的缩略图特殊一些,比如:

1、带圆角的缩略图:

如果我们需要带圆角的缩略图,但提供的图片是 n * n 的正方形的图片,该怎么办?这时候可以在贴图之前,先利用 Paint.setXfermode 方法来设置图片叠加时的混合模式,从而达到目的。一般而言,使用方法如下:

Paint paint = new Paint();paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XXX);canvas.drawBitmap(srcBmp, rc, rc, paint);

关于 PorterDuff.Mode 的值,确定了 SrcBmp 和 DstBmp 交叠时像素的处理方式,其作用用一幅图片展示如下:

Android如何实现图片生成卷角和圆角缩略图的方法

我们看出 SrcIn 这个模式,只保留 SrcBmp 和 DstBmp 直接的交集部分,并且只展现 SrcBmp 上这部分交集的内容。这个模式适合我们做带圆角的缩略图。我们先在 Canvas 上绘制一个实心圆角矩形,其他部分透明,然后用这个模式把缩略图再绘制到 Canvas 上即可:

Bitmap roundThumbBitmap = Bitmap.createBitmap(  rc.width(), rc.height(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(roundThumbBitmap);Paint paint = new Paint();paint.setColor(0xFFFF0000);  // 任何不透明的颜色均可。(作为掩码色)paint.setAntiAlias(true);   // 开启抗锯齿,防止圆角毛躁.// 填充一个圆角矩形.final float radius = 5.0f;canvas.drawRoundRect(new RectF(rc), radius, radius, paint);paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));canvas.drawBitmap(srcBmp, rc, rc, paint);

做出的效果如下:

Android如何实现图片生成卷角和圆角缩略图的方法

2、带 “卷角+圆角” 的缩略图:

有时候,我们需要为一张普通的图片生成 “卷角+圆角” 效果的图,像这样:

Android如何实现图片生成卷角和圆角缩略图的方法

这时候,我们可以用两张辅助图来实现这个效果,一张底图做掩码,得到 “圆角+左上角切角” 的效果,然后用另一张图片覆盖在上面,得到 “灰色边框+右上角卷角” 的效果,我们需要的两张图如下:

Android如何实现图片生成卷角和圆角缩略图的方法

代码如下:

Bitmap rollAngleThumbBmp = Bitmap.createBitmap(rc.width(), rc.height(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(rollAngleThumbBmp);Bitmap maskBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.mask);Bitmap borderBmp = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.border)).getBitmap();Paint paint = new Paint();paint.setAntiAlias(true);// 先贴掩码图.canvas.drawBitmap(maskBmp, rc, rc, paint);// 再用 SrcIn 的模式贴缩略图.paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));canvas.drawBitmap(srcBmp, rc, rc, paint);// 先取消 Xfermode.paint.setXfermode(null);// 再贴边框卷角图.canvas.drawBitmap(borderBmp, rc, rc, paint);

得到的效果如下(看起来有些毛躁,纯属是我切的 mask 和 border 图片的问题,不是方法的问题):

Android如何实现图片生成卷角和圆角缩略图的方法

Android是什么

Android是一种基于linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发

感谢各位的阅读!关于“Android如何实现图片生成卷角和圆角缩略图的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Android如何实现图片生成卷角和圆角缩略图的方法

本文链接: https://www.lsjlt.com/news/220263.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作