(译)PorterDuff.Mode

第一次翻译文章,不当之处请多指教。原文链接

类继承结构

public static final enum PorterDuff.Mode
        extends Enum<PorterDuff.Mode>
java.lang.Object
   ↳    java.lang.Enum<android.graphics.PorterDuff.Mode>
   ↳    android.graphics.PorterDuff.Mode

Porter-Duff

Porter-Duff 这个类名是为了表达对 Thomas Porter 和 Tom Duff 的敬意,他们于 1984 年发表了一篇名为 “Compositing Digital Images”(合成数字图像)的开创性论文。在这篇文章中,两位作者描述了12种合成操作符,具体来说就是当我们把原图像绘制到目标图像处时应该如何计算二者结合后的颜色。

“Compositing Digital Images”(合成数字图像)于1984 年 7 月 发表在计算机图形期刊第18期,第3页。

由于 Porter 和 Duff 的工作只关注原图像和目标图像共同绘制对 alpha 通道(即我们所理解的透明度)的影响,所以我们又把在他们论文所提到的12种操作称为 alpha 合成模式

方便起见,PorterDuff 类中也提供了混合模式,它们类似于alpha合成模式,只不过它们不仅仅是限制在 alpha 通道(RGB可能都有涉及)。Porter 和 Duff 的文章中并没有涉及到这些混合模式的操作,只不过是为了方便的目的我们才把这些操作包含进 PorterDuff 这个类中。

图像

下面所有的图像示例都是基于相同的原图像和目标图像

Source image.png
Destination image.png

下面代码展示了用于生成每个图像的绘制顺序:

Paint paint = new Paint();
canvas.drawBitmap(destinationImage, 0, 0, paint);
PorterDuff.Mode mode = // choose a mode
paint.setXfermode(new PorterDuffXfermode(mode));
canvas.drawBitmap(sourceImage, 0, 0, paint);

Alpha 合成模式

Source.png
Source Over.png
Source In.png
Source Atop.png
Destination.png
Destination Over.png
Destination In.png
Destination Atop.png
Clear.png
Source Out.png
Destination Out.png
Exclusive Or.png

混合模式

Darken.png
Lighten.png
Multiply.png
Screen.png
Overlay.png

合成方程

以下每个单独的 alpha 合成或混合模式的文档提供了计算原图像和目标图像合成之后的 alpha 值和颜色值的精确方程。

alpha 的结果(输出值)记为

颜色的结果(输出值)记为

概要

  • PorterDuff.Mode
    ADD
将源像素添加到目标像素并使饱和度叠加
  • PorterDuff.Mode
    CLEAR


    被源像素覆盖的目标像素被清除为0
  • PorterDuff.Mode
    DARKEN


    保留源像素、目标像素的较小值
  • PortDuff.Mode
    DST


    丢弃源像素,保留目标像素
  • PortDuff.Mode
    DST_ATOP


    丢弃未被源像素覆盖的目标像素
  • PortDuff.Mode
    DST_IN


    保留覆盖源像素的目标像素,丢弃剩余的源像素和目标像素
  • PortDuff.Mode
    DST_OUT


    保留未被源像素覆盖的目标像素
  • PortDuff.Mode
    DST_OVER


    源像素绘制在目标像素后面
  • PortDuff.Mode
    LIGHTEN


    保留源像素、目标像素的较小值
  • PortDuff.Mode
    MULTIPLY


    将源像素和目标像素进行Multiply(正片叠底)
  • PortDuff.Mode
    OVERLAY


    像素是进行 Multiply(正片叠底)混合还是 Screen(屏幕)混合,取决于目标颜色
  • PortDuff.Mode
    SCREEN


    将源像素和目标像素相加,然后减去乘以目标元素的源像素
  • PortDuff.Mode
    SRC


    只保留源像素
  • PortDuff.Mode
    SRC_ATOP


    丢弃未覆盖目标像素的源像素
  • PortDuff.Mode
    SRC_IN


    保持覆盖目标像素的源像素,丢弃剩余的源像素和目标像素
  • PortDuff.Mode
    SRC_OUT


    只保留不包含目标像素的源像素
  • PortDuff.Mode
    SRC_OVER


    源像素绘制在目标像素上
  • PortDuff.Mode
    XOR


    丢弃源像素覆盖目标像素的源像素和目标像素
    CodeCogsEqn (35).png

总结

其实整篇下来,也没有几个英文单词,就是一直粘图。不过算是一个好的开始,因为工作中涉及到这方面的内容,算是巩固总结啦。顺便安利一下这篇个人觉得不错的文章各个击破搞明白PorterDuff.Mode

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容