maimat(海量图像处理工具)是一款开源工具,专为批量图像处理而设计:调整大小和压缩。该应用程序是用 Python 3.10+ 编写的,并使用 ImageMagick 作为处理引擎。
Category: software
-
Aleka 是一款基于 Flutter 构建的跨平台绘图应用
Aleka 是一款用 Flutter 编写的轻量级、快速绘图应用程序。它适用于任何地方:浏览器、桌面(Windows、macOS、Linux)和移动设备(iOS、Android)。
引擎盖下是纯粹的 Dart、Material 3 和对细节的关注。
机会
- 手绘图:通过二次贝塞尔插值实现平滑笔画。
- 15 种颜色的调色板:通过视觉指示快速选择。
- 画笔大小:可使用滑块在 1 到 30 像素之间进行调整。
- 撤消:后退一步。
- 清除画布:只需单击一下即可。
- 洪水填充:具有平滑边缘容差的 BFS。
- 保存:格式
.aleka(JSON)。 - 加载:打开之前保存的绘图并继续。
- PNG 导出: 以 3 倍分辨率捕获画布。
- 🎬 动画模式: 带时间轴的逐帧动画:
- 添加和删除框架,每个框架都有自己的设计。
- 帧持续时间从 50 毫秒到 5 秒。
- 更改 FPS:6、8、12、15、24、30 或 60。
- 导出为 MP4(通过桌面上的 ffmpeg、浏览器中的 ffmpeg.wasm)。
- 深色和浅色主题:材质3,遵循系统。
为什么要颤动?
Flutter 允许您为六个平台编写一个应用程序,而无需重复代码。 Aleka 仅使用 Dart 和 Flutter SDK 的本机功能以及最少的第三方依赖项:
file_picker、image用于在填充时处理像素、ffmpeg_wasm用于在浏览器中导出视频。架构
该项目遵循简洁架构和 SOLID 的原则:
- PaintCanvasController – 通过侦听器/观察者模式控制笔划和填充的状态。
- PaintToolbar – 调色板、滑块和按钮的 UI 组件。
- AlekaFile – JSON、PNG 捕获中的序列化/反序列化。
- MovieController – 帧和动画状态的模型。
- VideoExport – 封装 MP4 编码逻辑(桌面/网络)。
I/O 函数(
saveStrokes、loadStrokes、capturePng等)可注入 – 它们可以在测试期间用模拟替换。该项目有79个测试:检查序列化、取消、加载/保存、PNG和视频导出、帧模型和时间轴。文件格式.aleka
.aleka文件是可读的 JSON,可以在任何文本编辑器中打开:"aleka": "1.0", "strokes": [ { "color": 4278190080, "strokeWidth": 3.0, "points": [[100.0, 200.0], [150.0, 250.0]] } ] }每个笔划存储一种颜色 (ARGB32)、粗细和点数组。该格式由
aleka字段进行版本控制。动画模式
主要功能之一是内置的逐帧动画编辑器。您绘制一个框架,添加一个新框架,绘制下一个框架,依此类推。时间线显示缩略图并允许您更改帧的顺序和持续时间。完成的动画可以导出为 MP4。
导出算法迭代所有帧,通过 RepaintBoundary 捕获它们,收集 PNG 字节并将它们传输到编码器。在桌面上,调用系统 ffmpeg,在浏览器中,使用 ffmpeg.wasm – ffmpeg 到 WebAssembly 的成熟端口,直接在浏览器沙箱中工作。
洪水填充
填充实现使用宽度优先搜索 (BFS) 和颜色容差 (
_kFillTolerance = 1000)。这使您可以正确处理笔画的平滑边缘 – 填充不会超出轮廓,但会捕获边框上的半透明像素。对于空画布,将创建实心填充,无需进行不必要的计算。尝试
Aleka 可在网络上使用并作为本机应用程序使用:
demensdeum.com/software/aleka/
源代码在 MIT 许可证下开放:
-
妈妈日历 – 跨平台提醒应用程序
Mama Calendar 是一个用 React Native (Expo) 编写的跨平台事件和提醒应用程序,具有两个后端实现:Node.js + MongoDB 和 PHP + MariaDB。
该应用程序允许您创建带有表情符号分类的事件,选择重复类型(一次、每年、每月、每周、每天),并在单独的“重要事件”选项卡中查看接下来 3 天的重要事件。
技术栈
前端是通过带有 TypeScript 的 Expo SDK 57 用 React Native 0.86 编写的,用于导航的 Expo Router 和用于动画的
react-native-reanimated。 Expo-symbols 用于图标(iOS 上的 SF 符号,Android/Web 上的 Material 图标)。后端有两个版本实现:
- Node.js: Express 4、通过本机驱动程序的 MongoDB 8、使用 scrypt + salt 的自定义身份验证、手动令牌管理。 Docker Compose 会启动客户端 (nginx)、服务器和 MongoDB。
- PHP: 无框架的 PHP 8.2、PDO + MariaDB 11、用于密码散列的 bcrypt、您自己的路由器以及通过 Composer 自动加载的 PSR-4。
应用功能
- 注册和授权:带有用户名/密码和不记名令牌的简单系统
- CRUD 事件:创建、查看、编辑和删除包含日期、表情符号和重复类型的事件
- 智能过滤:“重要事件”选项卡显示未来 3 天的事件,并考虑重复规则。例如,年度事件显示最近的年度事件、每月 – 按月中的日期、每周 – 按星期的日期
- 表情符号选择器: 20 个预设表情符号,用于对事件进行快速分类
- 突出显示今天的活动:今天的活动以红色背景突出显示 (#B71C1C)
- 深色主题:自动检测系统配色方案,并使用单独的浅色和深色主题调色板
- 国际化:通过 React Context 实现俄语和英语
- Анимации: анимированный сплэш-скрин с Keyframe API и упругой интерполяцией, анимированная иконка приложения с вращающимся свечением
- 管理端点:管理用户、令牌并通过主令牌清除数据库
为什么有两个后端实现?
Node.js 版本是主要版本,但 PHP 版本作为更经典托管的替代方案存在。 API 完全相同,允许您在不更改客户端代码的情况下在它们之间进行切换。
基础设施
整个堆栈是通过 Docker Compose 构建的:客户端通过多阶段构建(Expo export → nginx alpine)进行组装,服务器位于 Node.js、MongoDB 8 上。对于 PHP 版本,有一个单独的包含 MariaDB 11 和 phpunit 的 compose 文件用于测试。
Web 版本的组装由 PowerShell 脚本自动完成,该脚本会在
expo 导出之前修补 API_URL,并在之后恢复原始版本。输出
Mama Calendar 是一款功能齐全的跨平台应用程序,涵盖整个周期:从 React Native 上的移动和 Web 前端到两个服务器端选项。该项目因其架构、现代 Expo SDK 功能的使用和双后端实现而有趣。
链接
https://github.com/zefir1990/Mama-Calendar
https://demensdeum.com/software/mama-calendar/events -
特弗莱彻

Teflecher 是一款快速、交互式、跨平台的测验应用程序,构建于 Kotlin Multiplatform (KMP) 和 Compose Multiplatform 之上。它允许用户直观地从本地 JSON 文件或远程 URL 加载测验、回答多项选择题、查看正确答案的即时反馈并跟踪结果。网址:
https://demensdeum.com/software/teflecher/GitHub:
https://github.com/zefir1990/teflecher也是基于 Ionic + Capacitor 技术的 Teflecher Editor 格式的测验编辑器
-
幽灵联系人

Ghost Contacts 是一个简单的 Web 应用程序,旨在隐藏标准系统 API 和电话簿中的联系人。所有信息仅存储在您的浏览器本地,不会传输到外部服务器。主要功能
- 从系统 API 中隐藏:您的联系人不会与标准系统联系人 API 和设备电话簿同步。
- 紧急密码:特殊密码,输入后,整个联系人数据库将立即且不可撤销地删除。
- 导入和导出:通过 CSV 文件方便地传输联系人数据库以创建备份副本。
-
Raiden Video Ripper
Raiden Video Ripper 是一个专为视频编辑和格式转换而设计的开源项目。它是使用 Qt 6 (Qt Creator) 创建的,允许您编辑视频并将其转换为 MP4、GIF 和 WebM 格式。您还可以从视频中提取音频并将其转换为 MP3 格式。
微软商店:
https://apps.microsoft.com/detail/9nvzjs98smgcGitHub:
https://github.com/demensdeum/RaidenVideoRipper/releases -
乌什基广播电台
Ushki-Radio 是一款用于在线广播的跨平台广播播放器,专注于简单性和聆听乐趣。没有不必要的功能,没有超载的接口 – 只需打开它并聆听即可。

https://demensdeum.com/software/ushki-radio该项目使用开源广播浏览器,使来自世界各地的数千个广播电台可以在应用程序中使用。您可以按名称、流派或受欢迎程度搜索它们,将它们添加到您的收藏夹并快速返回您最喜欢的电台。
Ushki-Radio 非常适合背景广播播放器的角色:它会记住最后一个电台,允许您控制音量并且不需要复杂的设置。界面简洁易懂 – 一切都经过精心设计,不会分散音乐、对话和广播的注意力。
从技术上讲,该项目是基于 React Native 和 Expo 构建的,因此它既可以在浏览器中运行,也可以作为本机应用程序运行。在底层,expo-av 用于播放音频,用户设置存储在本地。支持多种语言,包括俄语和英语。
Ushki-Radio 是现代互联网广播播放器的一个很好的例子:开放、轻量级、可扩展并且主要以听众为中心。该项目根据 MIT 许可证分发,非常适合个人使用,也可以作为您自己的音频应用实验的基础。
GitHub:
https://github.com/demensdeum/Ushki-Radio谷歌播放:
https://play.google.com/store/apps/details?id=com.demensdeum.ushkiradio -
Glazki TV:互联网电视的现代播放器
Glazki TV 是一款现代、高性能的互联网电视 (IPTV) 播放器,建立在 React Native 和 Expo 的基础上。该项目注重易用性和速度,为在移动设备和浏览器中观看 IPTV 频道提供便捷的界面。
主要功能
- 频道浏览:浏览数千个频道,并进行分类以便于导航。
- 搜索:按名称快速查找您需要的频道。
- 收藏夹:保存您喜爱的频道以便快速访问(数据保存在本地)。
- 深层链接:共享自动打开频道的直接链接。
- 主题支持:界面自动适应系统深色或浅色主题。
- 网络支持:播放器在浏览器中具有 URL 同步功能。
技术栈
该项目基于现代开发工具:
- 框架: React Native + Expo
- Video Player: expo-video (замена устаревшему expo-av)
- UI 工具包:react-native-paper
- 播放列表解析器: iptv-playlist-parser
网页版:
https://demensdeum.com/software/glazki-tv/谷歌播放版本:
https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv



