news 2026/8/25 10:09:15

Pixel It:3 行代码把照片变成像素画

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pixel It:3 行代码把照片变成像素画

Pixel It:3 行代码把照片变成像素画

【免费下载链接】pixelitCreate pixel art from an image项目地址: https://gitcode.com/gh_mirrors/pi/pixelit

Pixel It 是一个纯 JavaScript 像素艺术转换库,把普通照片变成复古像素风格的图片。它没有外部依赖,只使用浏览器 Canvas,核心实现集中在src/pixelit.js一个文件里。你可以把图像像素化、转成灰度,或者把颜色压缩到你指定的调色板。

5 分钟跑通第一张像素图

克隆仓库并安装依赖,用 gulp 启动本地构建:

git clone https://gitcode.com/gh_mirrors/pi/pixelit npm install gulp serve

页面里放一个img和一个canvas,用默认约定就能运行:

<img src="sky.jpg" id="pixelitimg" alt=""> <canvas id="pixelitcanvas"></canvas> <script src="pixelit.js"></script> <script> const px = new pixelit(); px.draw().pixelate(); </script>

draw()把图片画到画布上,pixelate()输出像素化结果。不传配置时,库默认读取 id 为pixelitimg的元素、写到 id 为pixelitcanvas的画布,所以这两个 id 对上就不用传任何参数。

三种输出:像素化、灰度与调色板压缩

实例上可组合的变换有三种:

  • .pixelate():基础像素化。先缩小再放大形成色块,块的大小由 scale 决定。
  • .convertGrayscale():把每个像素的 RGB 三通道取平均,得到黑白像素图。
  • .convertPalette():把每个像素映射到调色板中最近的颜色。调色板由palette配置,默认内置 16 色。

三者可以链式调用,最后用px.saveImage()把结果以pxArt.png的文件名下载。

图:左侧为原始油画,右侧经 Pixel It 以 4 色调色板压缩后的像素艺术效果

scale、palette 与尺寸上限怎么取

scale控制像素块大小,取值 0–50 的整数,默认 8。小值块细、接近原图;大值块粗、更抽象。官方 4 色示例用的就是 17。传入超出 0–50 的值不会报错,而是静默回落到默认 8。

palette[[r,g,b],...]形式的数组,之后也能用setPalette(arr)更换。颜色数量下限是 2,只有 1 色时convertPalette()不会生效。颜色越少风格越统一,越多越接近原图细节。

maxWidth / maxHeight限制输出尺寸,超过的部分会在draw()阶段被等比缩小;两者同时设置时高度优先。

const px = new pixelit({ from: document.getElementById('pixelitimg'), scale: 20, // 0-50,默认 8 palette: [[26,28,44],[93,39,93],[177,62,83],[239,125,87]] }); px.draw().pixelate().convertPalette();

两个实际处理链路

  • 做游戏素材:输入一张人物或场景照片,scale 取 17–20,再链上convertPalette()压到 4–16 色,输出可直接当素材用的低分辨率像素图。docs/assets/px-palette4c.jpg就是 4 色、块大小 17 的效果。
  • 处理大尺寸照片:输入一边超过 900px 的高清图,例如docs/assets/tests/里那张 2720×1224 的键盘照片。此时pixelate()内部会自动把缩小比例减半,同样的 scale 在大图上得到的块反而更大;想要输出尺寸可控,再配上maxWidthmaxHeight

图:docs/assets/tests/ 目录中的 2720×1224 高分辨率测试图,用于验证 Pixel It 在大图上的表现

几个容易踩的坑

  • scale 只在 0–50 区间生效,越界值会回落成默认 8,代码不会提示。
  • convertPalette()需要至少 2 个颜色,1 色不产生效果。
  • pixelate()convertPalette()convertGrayscale()都必须在draw()之后调用。
  • 实例创建时会把源图片元素隐藏(visibility: hidden并固定定位),想保留显示需要自行处理样式。
  • 一边超过 900px 的大图内部缩小比例自动减半,像素化程度和小图不一样,调参时要留意。

继续深入去哪看

docs/index.html是在线调试页,支持上传图片、上传 hex 或 csv 格式的调色板文件、手动加色。docs/tests.html用于验证不同尺寸图片的处理效果。核心类在src/pixelit.js,运行gulp serve后构建产物输出到dist/docs/js/两个目录。整个转换链路就这一个文件,改算法、读源码都不需要跨目录。

【免费下载链接】pixelitCreate pixel art from an image项目地址: https://gitcode.com/gh_mirrors/pi/pixelit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 10:06:13

EDA工具全解析:从PCB设计到芯片实现的三重境界与实战指南

1. 从一张白纸到一块芯片&#xff1a;EDA到底是什么&#xff1f;如果你是一个电子爱好者&#xff0c;或者刚入行的硬件工程师&#xff0c;你可能经常听到“EDA”这个词。它听起来很高大上&#xff0c;似乎和那些动辄上亿投资的芯片设计紧密相连。但事实上&#xff0c;它离我们并…

作者头像 李华
网站建设 2026/8/25 10:03:10

C#字节数组高效合并:Array.Copy、Buffer.BlockCopy与Span性能对比

1. 项目概述&#xff1a;从“拼接”到“高效复制”的思考 在C#开发中&#xff0c;处理字节数组&#xff08; byte[] &#xff09;是家常便饭&#xff0c;无论是网络通信、文件I/O、图像处理还是与硬件交互&#xff0c; byte[] 都是数据流转的基石。最近在做一个上位机项目…

作者头像 李华
网站建设 2026/8/25 10:01:53

大模型智能体面试:技术招聘的新范式与备战策略

1. 项目概述&#xff1a;大模型智能体面试时代的来临2026年的大模型智能体面试将彻底改变传统技术招聘的游戏规则。作为经历过三次技术浪潮的老程序员&#xff0c;我亲眼目睹了从白板手写代码到在线编程测试&#xff0c;再到如今基于大模型的智能体面试官的演进过程。这种新型面…

作者头像 李华
网站建设 2026/8/25 9:57:43

R语言实战:基于二项分布绘制OC曲线,量化评估抽样检验方案性能

1. 项目概述&#xff1a;从统计质量管理的核心工具到R语言实现在制造业、服务业乃至任何涉及流程与结果检验的领域&#xff0c;如何科学地评估一个抽样检验方案的好坏&#xff0c;是质量工程师和数据分析师必须面对的经典问题。一个常见的场景是&#xff1a;你设计了一个抽样方…

作者头像 李华
网站建设 2026/8/25 9:55:16

AI架构师核心能力与招聘实战指南

1. 为什么企业需要AI架构师&#xff1f;在数字化转型浪潮中&#xff0c;AI技术已从实验室走向产业应用的最前沿。我见过太多企业投入重金组建AI团队&#xff0c;却因为缺乏合格的AI架构师而导致项目烂尾。一个典型的失败案例是某金融公司花费800万构建的智能风控系统&#xff0…

作者头像 李华