微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为要分层的颜色选择 alpha 以获得最大色域

如何解决为要分层的颜色选择 alpha 以获得最大色域

a 是灰度颜色的 alpha 值: rgba(0,a)

我想在白色 rgb 背景上将此颜色叠加 z 次。

给定 z,我如何确定什么 a 将创建最广色域的结果灰度值?

我天真地认为我可以用 255/z 解决,但这导致我最暗的灰度值远不及 255。这里有三层 (z = 3),我设置了 a = 85。唉!最暗的是 180,所以我可以增加 a 并最终得到更宽的色域。但是如何?

three layered rectangles

https://codepen.io/jedierikb/pen/JjRebjB?editors=1010

const $c = document.getElementById( 'c' );
$c.width = 200;
$c.height = 200;

const ctx = $c.getContext( '2d' );
const numLayers = 3;

const alpha = Math.round(255/numLayers);
ctx.fillStyle = '#000000' + intToHex(  alpha );
for (var i=0; i<numLayers; ++i) {
  ctx.fillRect( i*10,i*10,100,100 );
}

//let's get a pixel
var id = ctx.getimageData(numLayers*10,numLayers*10,1,1).data;
console.log( 'for ' + numLayers + ' layers,using alpha ' + alpha );
console.log( 'resulting in darkest alpha being',id[3] );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。