当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4209795.html

相关文章:

  • EDA工具全解析:从PCB设计到芯片实现的三重境界与实战指南
  • 如何用OCaml实现一个JSON查询语言?query-json架构解析:从词法分析到解释执行
  • C#字节数组高效合并:Array.Copy、Buffer.BlockCopy与Span性能对比
  • 大模型智能体面试:技术招聘的新范式与备战策略
  • R语言实战:基于二项分布绘制OC曲线,量化评估抽样检验方案性能
  • AI架构师核心能力与招聘实战指南
  • VMware安装Rocky Linux 9:从零搭建Linux虚拟机实验环境
  • 在PongoOS中读取ARM64 CPU ID寄存器:检测指令集与硬件能力
  • 深度解析 three-devtools 脚本注入机制:破解浏览器扩展跨上下文访问难题
  • ESP-IDF安装避坑指南:系统兼容、Python隔离与离线部署
  • 如何实时把日文 Galgame 文本翻成中文:游戏翻译工具 LunaTranslator 的 3 种取词方式新手完全指南
  • WebSharper F源码生成器新特性:编译前自动生成代码与输出自动合并
  • MASS肌骨系统框架解析:C++物理内核、OpenGL渲染与PyTorch训练的三层协作全流程
  • 链表数据结构与面试算法精解
  • WSL2开机自启终极方案:Windows服务+systemd双轨驱动
  • pylint-django的隐藏补丁术:Monkey Patching静默消除no-member误报的完整原理
  • 大模型面试核心技术与实战指南
  • 如何用 Plombery 创建你的第一条 Pipeline?Task、Pipeline、Trigger 三大核心概念一次讲透
  • 如何用 Android Studio 从零构建 MoneyManagerEx:JDK17 + Gradle 完整开发者构建指南
  • 12G 显存跑通 SV4D:Stability AI generative-models 从零到 4D 生成的完整路线
  • JavaScript事件循环机制详解与面试实战
  • test-case版本选择指南:理解MSRV策略与依赖锁定
  • 从数据采集到知识生长——WSaiOS-ICAI知识获取与更新流程工程研究
  • 如何本地预览 Prisma 参考文档:prisma-docs-generator serve 命令完整教程
  • 3分钟教程:ncmdump 免费把 NCM 音乐转成 MP3
  • Ardent迭代器家族源码全解:栈与队列实现4种树遍历的完整清单
  • rplidar_ros launch文件全解:12个参数配置指南与scan_mode、angle_compensate实战技巧
  • 网络安全校招岗位解析与职业规划指南
  • rosbag2 从零跑通 ROS2 录制回放:安装、录制与回放实用指南
  • JavaScript核心概念与高频面试题解析