首页/新闻资讯/正文详情

Compositor 源码拆解:Mac 开源图像编辑器的图层、滤镜与像素内核

发布时间:2026/11/15 3:50:24 来源:云帆数科 栏目:资讯中心
Compositor 源码拆解:Mac 开源图像编辑器的图层、滤镜与像素内核
Compositor 源码拆解Mac 开源图像编辑器的图层、滤镜与像素内核【免费下载链接】CompositorThe Photoshop alternative for Mac项目地址: https://gitcode.com/gh_mirrors/compos/CompositorCompositor 是一款面向 macOS 的免费开源图像编辑器围绕图层合成与后期处理构建图层、蒙版、选区、非破坏性变换、修复笔刷、调整层与滤镜一应俱全快捷键按 Photoshop 习惯布局。工程以 SwiftUI 写成按 Document编辑逻辑、IO导入导出与项目存储、Rendering渲染管线、UI界面四个目录划分配套 50 余个测试文件是研究大型 SwiftUI 应用的合适样本。修图工作流图层、选区与滤镜如何串起来打开工程后编辑会话集中在 Compositor/Document/一个 EditorSession 同时持有图层树 document、撤销栈 history、视口 viewport 与当前工具 toollevels、filterEdit 等模态面板也挂在它的状态上UI 层观察属性变化即可驱动面板开合。功能覆盖可以压成一张表能力具体项图层混合模式、不透明度、复制、拖拽重排与嵌套、跨项目拖入蒙版绘制/填充/反相/羽化可链接图层或单独变换剪贴蒙版maskSourceID调整层Hue/Saturation、Levels、Curves、Exposure、Gradient Map、Grain 六种选区Marquee 选框、自由/多边形套索、魔棒加减布尔与载入蒙版变换非破坏性移动/缩放/旋转/翻转⌘ 拖控点自由扭曲吸附参考线精确数值输入画笔修复笔刷Shift 画直线、污点修复、仿制图章、模糊/涂抹/液化、渐变与形状、段落文字一条典型链路用 Marquee 或魔棒圈出区域把图层像素或蒙版载入选区按 B 补画细节按 J 用 Spot Healing Brush 去掉污点再按 ⌘L 做整体校正——调整层是独立图层随时回改收尾用 ⇧⌘E 导出 PNG 或 ⇧⌥⌘S 导出带实时预览的 JPEG。画布侧Crop 支持 Option 对称裁剪Canvas Size 与 Image Size 是两个独立命令。EditorSession 状态多、耦合面大是这套方案的代价换来的是任意两个功能——比如选区内限制滤镜预览——都能快速联动。画布缩到很小时为什么不卡渲染管线的分层设计画布渲染不是 Core Graphics 简单叠加而是一条分层管线核心在 Compositor/Rendering/LayerRenderer.swift 驱动图层合成MetalLayerEffects.swift 处理描边与投影SeparableBlend.swift 实现可分离混合模式大画布由 TiledLayerRenderer.swift 分块渲染配合 DownsampleCache.swift 的降采样缓存——图片缩到再小原始分辨率也完整保留放大超过 800% 时画布切到像素网格。最密集的逐像素运算下沉到 C 内核BrushPixels.c 管笔刷足迹与混合HealPixels.c 做内容感知修复WandPixels.c 跑魔棒LevelsPixels.c、NoisePixels.c、AdjustPixels.c、LensPixels.c 各管一摊ContentFill.c 实现能扩展画布的内容感知填充MetalBrushCoverage.swift 则用 GPU 预算笔刷覆盖范围。以 Levels 为例⌘L 呼出面板后拖动滑杆后台是 LevelsPixels.c 在算查找表实时预览会限制在选区内Metal 与 C 双栈的维护成本不低换来的是大画布帧率与逐像素精度两头都稳。.comp 文档包存了什么校验又卡在哪Compositor 的项目文件是 macOS 文档包manifest.json 记录元数据images/ 下按图层 UUID 存放像素 .png 与蒙版 .mask.png8 位灰度。关键设计是像素与变换分离——PNG 只存原始像素与透明度位置、旋转、翻转等变换写在 manifest源照片被移动或删除后项目照样能打开。完整规范见 docs/project-format.md。保存端用 NSFileCoordinator 加 FileWrapper.write(.atomic) 做先写完整包、再原子替换加载端拒绝而不猜测不支持的版本、无效元数据、缺失资源、用符号链接逃逸包外的路径一律打回。格式演进到 v7版本新增v2图层分组parentID/isGroup拒绝循环与超过 64 层的嵌套v3每层不透明度与 9 种混合模式Normal 至 Color Burnv4图层蒙版maskFile/maskEnabled白显黑隐v5maskSourceID 实时蒙版即剪贴蒙版的底层表示链长上限 256v6组文件夹可携带蒙版v7调整层元数据ProjectStore.swift 的 validate 与 checkSize 给出硬性上限画布单边 ≤ 30,000 像素、全部源像素 ≤ 1 亿、蒙版像素额外 ≤ 1 亿、图层 ≤ 10,000 层、manifest ≤ 4 MiB、单个编码资源 ≤ 512 MiB、分辨率 1–9600 PPI缺省 72。撤销历史与视口状态只属于会话不写进文件旧版本应用遇到更高版本会明确拒绝打开而不是错误渲染。宁可报错也不猜测是文档格式里最值得学的一条原则。快捷键Photoshop 习惯的完整复刻与自定义工具键基本沿用 Photoshop 布局V 移动、B 笔刷、E 橡皮擦、J 污点修复、S 仿制图章、T 文字、G 渐变、U 形状、I 吸管、M 选框、W 魔棒、L 套索、R 模糊/涂抹/液化、C 裁剪[ ] 调笔刷大小⇧[ ⇧] 调硬度数字键 0–9 连续输入可精确设定不透明度方向键按 1px/10px 步进微调。菜单级命令同样齐全⌘Z/⇧⌘Z 撤销重做、⌘S/⇧⌘S 保存与另存、⇧⌘E 导出 PNG、⇧⌥⌘S 导出 JPEG、⌘J 复制图层、⌘E 合并、⌘G/⌥⌘G 分组与剪贴蒙版、⌘L/⌘M/⌘U 呼出 Levels、Curves、Hue/Saturation、⌘D 取消选择、⇧⌘I 反选、⌥⌘A 选择主体。比复刻更值得注意的是可自定义ShortcutSettings 把重映射存进 UserDefaults键 keyboardShortcuts.v1保存前用 problem(in:) 校验——必须单键、修饰键位合法、不与 ⌘Q、⌘,、⌥⌘M 冲突、不允许重复指派实现见 KeyboardShortcuts.swift。对替代品定位来说快捷键是成本最低、感知最强的迁移入口把校验做严谨自定义才不会把布局改乱。从源码构建到发布 DMG一条完整的交付链路构建要求 macOS 26 与 Xcode 26打开 Compositor.xcodeproj 运行 Compositor scheme 即可。应用入口是 CompositorApp.swift主窗口默认 1180×780CompositorApplicationDelegate 持有全局 EditorSession 与项目控制器 projectsInfo.plist 里除了 Sparkle 自动更新SUFeedURL 与 SUPublicEDKey还注册了 JPEG/PNG/HEIC/TIFF 的查看器声明与 .comp 的 Owner handler。scripts/release.sh 把发布串成一条流水线xcodebuild -showBuildSettings 提取 MARKETING_VERSION 与 CURRENT_PROJECT_VERSIONCODE_SIGN_STYLEManual、Developer ID 证书、TEAM 3E4X3B9Z9T 执行 archive按 scripts/ExportOptions.plist 导出后 codesign --verify --deep --strict 验签压缩后 xcrun notarytool submit 公证、stapler staple 装订再用 create-dmg 打带背景图的 DMGtiffutil -cathidpicheck 合成 Retina 背景对 DMG 重复签名、公证、装订spctl --assess 验证 Gatekeeper质量侧CompositorTests/ 有 50 余个测试文件覆盖图层分组、蒙版、选区羽化、笔刷性能、变换、历史记录与导入导出性能基准另存于 docs/brush-performance.md。证书与公证凭据全部放在仓库之外仓库保持干净可构建——代价是新环境跑一次完整发布需要额外准备换来的是任何人都能直接拿源码构建和跑测试。【免费下载链接】CompositorThe Photoshop alternative for Mac项目地址: https://gitcode.com/gh_mirrors/compos/Compositor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

(最新)基于Springboot送货上门管理系统【附源码+文档】
(最新)基于Springboot送货上门管理系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 12:44:32

(最新)基于Springboot智慧超市管理系统【附源码+文档】
(最新)基于Springboot智慧超市管理系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 17:20:33

(最新)基于Springboot心情治愈管理系统【附源码+文档】
(最新)基于Springboot心情治愈管理系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 10:01:42

凯里报考电工证多少钱千万别踩坑
凯里报考电工证多少钱千万别踩坑

凯里报考电工证多少钱千万别踩坑 学历不高怕报不上名,怕被坑,怕花冤枉钱,这是很多想考电工证的小伙伴最真实的心声。尤其是像你这样学历不高、没接触过正规培训,却想进入电工行业的朋友,更要小心谨慎, 千万别踩坑… · 2026/11/15 21:33:35

临邑电工证培训价格内部消息:怕考不过白交培训费?这波操作保你一次过
临邑电工证培训价格内部消息:怕考不过白交培训费?这波操作保你一次过

临邑电工证培训价格内部消息:怕考不过白交培训费?这波操作保你一次过 怕考不过白交培训费?别慌,临邑电工证培训价格其实没你想象的那么贵,但选错机构真会让你血本无归。今天我就从一个真实案例出发,带你看看怎么用内部消息避开那些坑,稳稳拿下低压电工… · 2026/11/15 21:33:35

塘厦电工证考证网上查询全攻略:外省证怎么转过来?
塘厦电工证考证网上查询全攻略:外省证怎么转过来?

塘厦电工证考证网上查询全攻略:外省证怎么转过来? 之前考的证在外省能不能转过来?这是很多像你一样的人最关心的问题。如果你是 鹤壁应届工程类毕业生 ,正在考虑考取塘厦电工证,那你一定想知道这个证是否能在本地使用,特别是 网上查询… · 2026/11/15 21:33:35

电工证怎么线上报名值不值得考 电工小白也能看懂的避坑指南
电工证怎么线上报名值不值得考 电工小白也能看懂的避坑指南

电工证怎么线上报名值不值得考 电工小白也能看懂的避坑指南 怕考不过白交培训费?电工证线上报名流程不搞懂,真的容易被培训机构忽悠。很多新手拿到电工证后才发现,考了证却找不到工作,或者考了证没用上,白白浪费钱。今天咱们就来聊聊,… · 2026/11/15 21:33:35

在哪可查电工证到期换证流程
在哪可查电工证到期换证流程

平顶山在职建筑工人怎么查电工证到期换证流程 怕考不过白交培训费 你是不是也担心电工证到期了,不知道 在哪可查电工证 ,还怕考试不过,白交培训费?别急,这篇文章给你讲清楚,怎么报名、怎么查证、怎么换证,全部搞定! 1.… · 2026/11/15 21:33:35

余姚电工证哪考多久拿证?证书过期了不知道怎么复审延期
余姚电工证哪考多久拿证?证书过期了不知道怎么复审延期

余姚电工证哪考多久拿证?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?你不是一个人。我见过太多电工师傅因为证书过期被停工、罚款甚至被追究责任,最怕的就是临时抱佛脚,手忙脚乱还找不到门道。今天咱们就来聊聊 余姚电工证哪考… · 2026/11/15 21:32:35

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码