android透明像素效率,android-非透明像素上的ImageView ColorFilter.夹

我有一个带位图的ImageView.该位图具有Alpha通道和透明像素.

当我尝试将ColorFiter与Mode.OVERLAY(由于蜂窝)一起使用时-提供的颜色覆盖了整个imageview(整个矩形),但是我只想覆盖非透明像素.我如何裁剪imageview的画布以在需要的地方执行过滤器?

更新

我在png中有灰色图片:

当我尝试使用MODE_ATOP时,我得到:

当我使用OVERLAY时,我得到:

而我想得到:

解决方法:

public class MyActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final ImageView imageView = new ImageView(this);

setContentView(imageView);

final Paint paint = new Paint();

Canvas c;

final Bitmap src = BitmapFactory.decodeResource(getResources(),

android.R.drawable.sym_def_app_icon);

final int overlayColor = Color.RED;

final Bitmap bm1 = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ARGB_8888);

c = new Canvas(bm1);

paint.setColorFilter(new PorterDuffColorFilter(overlayColor, PorterDuff.Mode.OVERLAY));

c.drawBitmap(src, 0, 0, paint);

final Bitmap bm2 = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ARGB_8888);

c = new Canvas(bm2);

paint.setColorFilter(new PorterDuffColorFilter(overlayColor, PorterDuff.Mode.SRC_ATOP));

c.drawBitmap(src, 0, 0, paint);

paint.setColorFilter(null);

paint.setXfermode(new AvoidXfermode(overlayColor, 0, Mode.TARGET));

c.drawBitmap(bm1, 0, 0, paint);

imageView.setImageBitmap(bm2);

}

}

简而言之,我们使用OVERLAY模式绘制源位图和颜色,然后使用辅助位图(使用SRC_ATOP模式合成),使用AvoidXfermode将其组合以不绘制透明像素.

原始图片:

结果:

标签:clip,image,mask,android

来源: https://codeday.me/bug/20191127/2076869.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

svm预测结果为同一个值_SVM算法总结

一、1.感知机模型:感知器模型是SVM、神经网络、深度学习等算法的基础;感知器模型就是试图找到一条直线,能够把所有的“1”类和“-1”类分隔开,如果是高维空间中,感知器模型寻找的就是一个超平面,能够把所有的二元类别分…

iOS 动画绘制线条颜色渐变的折线图

效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图。折线图可以更加直观的表示数据的变化。网络上有很多绘制折线图的demo,有的也使用了动画,但是线条颜色渐变的折线图的…

python股票交易模型_如何用Python建模GGM模型并对股票估值?

内容首发乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech用代码理解分析解决金融问题首先我们快速了解一下什么是GGM模型。GGM模型又叫做“戈登增长模型”(Gordon Growth Model,GGM)是用于对公司进行估值的工具。该理论假设公司的内在价值就是将所有…

android android 修改 jpg exif 属性,Android开发之使用ExifInterface获取拍照后的图片属性...

本文实例讲述了Android开发之使用ExifInterface获取拍照后的图片属性。分享给大家供大家参考,具体如下:ExifInterface exif new ExifInterface(file.getPath());String widthStr exif.getAttribute(ExifInterface.TAG_IMAGE_WIDTH);String heightStr …

[Selenium] 最大化或自定义浏览器的大小

driver.manage().window().maximize(); //将浏览器设置为最大化的状态driver.manage().window().setSize(new Dimension(600, 400)); //将浏览器的大小自定义为600*400转载于:https://www.cnblogs.com/MasterMonkInTemple/p/5212721.html

python中如何替换某列特定数值_python 怎么根据两列值,修改对应的某列值,其中一列的为需要修改的列标题...

自己造了些数据,不知道是否符合题主的意思。原始数据:no wrong_item0 001 a1 003 a2 002 b3 004 c处理后结果:Out[1]:no a b c0 001 1 0 02 002 0 1 01 003 1 0 03 004 0 0 1具体代码如下:import pandas as pd# 创建dataframe,或者…

android怎么ota升级,Android OTA升级过程

通过网络或直接本地获取到OTA升级包之后,通过程序就可开始Android的升级。本文描述这一过程。在获取到OTA升级包之后,可以直接通过android.os.RecoverySystem.installPackage()开启OTA升级。RecoverySystem.installPackage()是在API-8之后加入的&#xf…

进阶学习js中的执行上下文

在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文。 1、当遇到变量名和函数名相同的问题。 var a 10; function a(){console.log(1); } a(); //报错 如果你觉得函数a会覆盖变量a那你…

android使碎片切换界面,玩转Android中的碎片Fragment

引言:在Android开发中,我们都知道一些界面的展示经常会用到的就是Activity,但是Activity存在着很大的局限性,比如说手机上的界面显示在平板上面就会发生各种变形的问题,Activity也无法实现局部的数据刷新,所以Android3.0之后出来了Fragment,Fragment通常…

python123阶乘累加_使用多线程计算阶乘累加 1!+2!+3!+...+19!+20!。其中一个线程计算阶乘,另一线程实现累加并输出结果。...

运用多线程的信号灯法进行边加边计算!代码如下public class JieChen {public static void main(String args[]){Sum sum new Sum();new Play(sum).start();new Add(sum).start();}}class Play extends Thread{Sum sum;public Play(Sum sum){this.sumsum;}Overridep…

html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...

在LBS(基于位置服务)的一些应用中,有时我们会需要计算两个用户或两个坐标点之间的距离。要解决这类问题,就要了解空间几何的概念并结合数学中在三角函数公式计算两点之间的值。本文介绍基于经度/纬度的,两个坐标点之间的距离计算,…

机器学习基于skcilearn tensorflow电子书_Tensorflow机器学习模型的跨平台上线

本篇文章转载自博客园,作者: 刘建平Pinard在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型,但是由于tensorflow模型往往较大,使…

html全局浮窗,Html 实现浮动窗口

今天在写一个html代码时,需要用到浮动窗口,通知信息,网站找了一下,代码如下带关闭按钮的浮动窗口代码(全屏漂浮)#fdck {border:1px solid #c0c0c0;margin:0 auto;padding:5px;background:#f0f0f0}关闭欢迎来到营了个销&#xff01…

python数据可视化工具 pandas_Pandas数据可视化工具——Seaborn用法整理(下)

在前一篇文章 Pandas数据可视化工具——Seaborn用法整理(上),我们了解了如何使用这些Seaborn代码绘制分布图和分类图。在本文中,我们将继续讨论Seaborn提供的一些其他以绘制不同类型统计图的功能,我们将从矩阵图开始讨论。矩阵图矩阵图是一种…

ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串

一、引入Vue在官网上下载vue.js。并用1.下载Vue.js,地址:Vue.js下载地址二、通过ajax获取后台参数,使用Vue渲染调用后台control,获取到数据,传到前端,使用Vue进行渲染。//详细分类,使用Vue渲染function fin…

html5 observer api,基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作

MutationObserver介绍MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件.Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation …

Maven(五)使用Nexus搭建Maven私服

文章装载于:http://blog.csdn.net/jun55xiu/article/details/39497089 Nexus介绍 Nexus是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库下载所需要的构件(artifact),但这通常不是一个好的做法&am…

python mean dropna_小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)...

泰坦尼克船员获救数据:titanic_train.csv用excel打开数据集。显示如下:写在前边:为了方便以后运用numpy和pandas的库,分别造它们的别名np和pd.import pandas as pd #造pandas的别名为pdimport numpy as np #造numpy的别名为np一、…

计算机学测打多少字,速度测试,一分钟能打多少字?

六、速度测试——检验学习效果经过一段时间的练习,输入速度提高了不少吧,赶快来测试一下现在一分钟可以输入多少英文或汉字。金山打字通2010的“速度测试”功能不仅有基本的“屏幕对照”速度测试,还有“书本对照”测试及要求较高的“同声录入…

HDFS入门(1)

2015.07.12笔记 1.HDFS Distributed File System(操作系统实现人机交互,最重要的功能是文件管理,使用文件管理系统,windows、Linux文件管理系统有共性:用户可创建文件/夹,删除,修改权限&#xf…