颜色数学从来不是缓慢的部分

2026年8月14日3 次浏览来源:Dev.to阅读原文

我的第一个版本的 图像到Minecraft 块转换器 锁定了浏览器标签 足够长的时间,我假设有东西崩溃了。

我直接从手机上掉入了一张相片,击中了转换器,页面停止响应点击——没有回旋动画,没有卷轴,什么都没有.

我坐在那里一段时间 想知道我是否写了一个无限循环。

我没有 它只是按我说的做, 在主线上,一次一个像素。

这篇文章是关于我试图修补它时所犯错误,因为我第一次猜测是自信地错误的,而实际的瓶颈变成了我不在意的地方.

问题的天真形状 工作很简单。

你有张照片。

你有一个固定的清单 Minecraft 块, 每个有已知的平均颜色。

对于输出网格中的每个单元格,你都会找到颜色最接近的块,然后写出.

明显的执行是两个嵌入式环:外出于像素上,内出于调色板上,保持最小.

教科书近邻取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取入取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取 然后用真实输入来计算数字 现代电话相机的一张照片大约是4000×3000——一千万像素在触摸任何东西之前.

在匹配前你先缩小范围,当然,因为输出网格可能有128或256个街区宽.

但是解码和再取样仍然在全解析后发生,然后相配回环将输出网格的每个单元格都运行在由几百个块组成的调色板中的每个条目上.

我用一个点击处理器来操作它。

我猜错了 我的第一个理论是颜色空间。

相配发生在OKLab而不是原始的RGB中,因为RGB距离产生经典"廉价滤镜"外观——最明显的是在皮肤色调和中程绿地上,其中数字上小的相差可以被读取为与人眼相去甚远的颜色.

OKLab转换涉及一个基质相乘和立方根,而立方根感觉很贵,所以我猜那是时间所在。

不是那样的 当我实际描述它而不是猜测, 颜色转换几乎没有注册。

几乎所有东西都坐落在调色板扫描中——内回环上——在清楚的事实中,这一切都发生在负责绘画页面的线上。

穿着一身服装有两个不同的问题:工作在主线上,所以不管工作有多快,UI都冻结了.

这部作品是真正冗余的,因为相片不断重复着颜色,我正在重新寻找同样的答案,成千上万次。

把它从主线上移出, 和随它而来的虫子 第一个修正是无聊的正确: 把管道放进网络工人。

UI线接过像素,工人磨,UI能活活地活活地活活地活活地活活地活活地活活地活活活地活活地活活活地活活地活活地活活活地活活活地活活活地活活活地活活活地活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活 没有人警告你 交割本身有代价 结构化-连通其有效载荷默认,结构化-连通多兆字节像素缓冲意味着复制多兆字节像素缓冲,每次转换两次——一次入,一次出.

您可以移动缓冲器, 而不是将其复制到传输列表中 : 手掌所有者越过边界,没有副本。

也可以使原作中去子——转移后,发件方为.

所以我在一个错误上度过了一晚 源缩略图每次都变成黑色的矩形 但只有在第一次转换之后 我为预览预览持有一个相同的缓冲器的参考文献, 并且转移已经从我下面取出。

修补不光彩:为主线程仍然需要的任何东西保留副本,或者不要转移特定的缓冲.

但是这种错误读作"canvas被打破了"长达一小时,然后读作"你把你的阵列给放弃了".

让内环消失的缓存 第二种修补是实际速度所住的地方,它来自照片的地产而不是JavaScript地产.

相片在色彩层面是极其重复的.

一个天空是千像素 几乎相同的蓝色。

脸颊是h

分享