2312skia,11管理颜色及下载等

2023-12-01 20:04
文章标签 管理 下载 颜色 2312skia

本文主要是介绍2312skia,11管理颜色及下载等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

管理颜色

Skia使用的所有颜色空间,通过如何从该颜色空间,转换为叫XYZD50的通用"连接"颜色空间,来描述自己.可从相同描述中,推导出如何从XYZD50空间转换回原颜色空间.

XYZD50是像RGB一样以三维表示的颜色空间,但XYZ部分则根本不像RGB,而是这些通道的线性混杂.Y最接近你认为的亮度,但X和Z则更抽象.

如果熟悉,这类似YUV."D50"部分指的是该空间大约5000开尔文的白点.

所有管理颜色绘图分为六个部分,三个步骤连接源颜色到该XYZD50空间,然后三个对称步骤XYZD50连接回目标颜色空间.

一些步骤可约掉.步骤如下:

管理颜色步骤

1,如果源颜色预乘的,则取消乘法,α不参与管理颜色,如果乘了它,就要除掉.
2,使用源颜色空间传递函数来线性化源颜色
3,通过乘以3x3矩阵,把这些未预乘线性源颜色转换为XYZD50色域.
4,通过乘以3x3矩阵,来转换这些XYZD50颜色到目标色域.
5,用目标颜色空间传递函数逆函数编码该颜色.
6,如果目的预乘的,则按α预乘.

该逻辑在SkColorSpaceXformSteps类型中.会看到它有5个步骤:总是合并最里面两个运算为一个3x3矩阵乘法.

优化

画画时,跳过基本无操作步骤:
1,如果已去掉预乘源则跳过1.
2,如果已线性编码源,则跳过2
3,如果单个连接矩阵是相同(即源和目标颜色空间带相同色域),则跳过34
4,如果目标需要线性编码,则跳过5
5,如果目标想要去掉预乘,则跳过6

更高级优化:
1,如果已跳过34,则传递函数相同时,可跳过25.通过给定传递函数发送颜色,它自己的逆是无操作的
2,如果跳过了2-5的所有步骤,如果要同时1和6,则可跳过16,不必去掉预乘,再预乘.
3,根据可允许跳过更多步骤,来按未预乘或预乘对待不透明的颜色.

多数时候,都是"闲着".如果要把给定颜色空间中的不透明颜色绘画到使用相同颜色空间标记的目标位置,会注意到可跳过所有这六个步骤.

一般,如果需要转换色域,应期望所有6步都有.2和5计算成本最高的.

空针SkColorSpace默认值

现在空针SkColorSpace默认值如何融入所有这些?用该小片段作为序言:

 if (srcCS == nullptr) { srcCS = sRGB; }if (dstCS == nullptr) { dstCS = srcCS; }

顺序很重要.要点是,假设未标记来源都是sRGB.如果未标记你的表面,就会表现得好像目的地与你绘画的来源流畅匹配,这至少跳过了上面列举的2-5步骤,保持了与引入管理颜色前,复古的Skia过去的工作方式兼容的非管理颜色绘画模式.
它不是很有原则,但维护很方便.

坐标空间

概览

Skia一般有两个不同坐标空间:设备和本地坐标空间.设备坐标由要渲染的表面(或其他设备)定义.它们从表面左上角的(0,0)到右下角的(w,h),它们以像素为单位测量.

本地坐标

本地坐标空间是向SkCanvas提供几何图形着色器的方式.默认,本地和设备坐标系相同.即几何图形一般按像素指定.

在此,在(100,50)定位矩形,并指定它的宽高.
本地坐标定义和求值绘画上的SkShader.在此,定义了线性渐变着色器,从绿色(当x==0时)到蓝色(当x==50时).

着色器不随几何图形移动

现在,试在(100,50)处绘画渐变填充正方形.
记住,本地坐标空间没有改变.原点仍在曲面的左上角.应在(100,50)定位已指定几何图形,但当x0变为50时,SkShader仍产生梯度.

滑动矩形SkShader定义渐变中.着色器不会随几何图形移动.

变换本地坐标空间

为了获得期望效果,可移动位置到100150,来创建新的渐变着色器.但使着色器难以重用.相反,可用SkCanvas上的方法来更改本地坐标空间.

这会在画布变换矩阵定义的新空间中求值,所有本地坐标(几何体和着色器).

变换着色器坐标空间

最后,可转换相对画布本地坐标空间的SkShader坐标空间.为此,在创建SkShader时提供localMatrix参数.

此时,由SkCanvas矩阵转换几何图形.由SkCanvas矩阵和该着色器的localMatrix变换SkShader.另一个视角:localMatrix定义了一个映射着色器的坐标几何体坐标空间的转换.

如,这里是渐变填充框.它首先平移了50个单位.然后,(在盒子中心)45旋转画布.旋转盒子的几何形状,及其中的渐变.
比较第二个示例.仍平移50个单位.不过,在此,仅按SkGradientShader::MakeLinear函数的localMatrix,旋转着色器45度.现在,该框保持未旋转状态,但在该框内旋转了渐变.

安装depot_toolsGit

按安装Chromiumdepot_tools中的说明下载depot_tools(包括gclient,git-clNinja).以下是摘要.

git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
export PATH="${PWD}/depot_tools:${PATH}"

(如果尚未安装)depot_tools还在系统上安装Git.

安装bazelisk

如果要添加或删除文件或更改#include,则要用Bazel重新生成BUILD.bazel文件的某些部分.建议安装为你(由bazelversion指定)选取适当的Bazel版本的Bazelisk这里,而不是手动安装Bazel这里.

安装ninja

可用gclientbin/fetch-ninja提供Ninja.

克隆Skia仓库

可用git或随depot_tools一起安装的fetch工具克隆Skia.

git clone https://skia.googlesource.com/skia.git
# //或
# fetch skia
cd skia
python3 tools/git-sync-deps
bin/fetch-ninja

开始使用Skia

现在可能想要构建Skia这里构建步骤.

这篇关于2312skia,11管理颜色及下载等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/442528

相关文章

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP