Category: software

  • maimat:批量图像压缩和调整大小

    maimat(海量图像处理工具)是一款开源工具,专为批量图像处理而设计:调整大小和压缩。该应用程序是用 Python 3.10+ 编写的,并使用 ImageMagick 作为处理引擎。

    链接

    https://github.com/zefir1990/maimat

  • 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 许可证下开放:

    github.com/demensdeum/Aleka

  • 妈妈日历 – 跨平台提醒应用程序

    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 格式的测验编辑器

    网址:
    https://demensdeum.com/software/teflecher-editor/

    GitHub:
    https://github.com/zefir1990/teflecher-editor

  • 幽灵联系人


    Ghost Contacts 是一个简单的 Web 应用程序,旨在隐藏标准系统 API 和电话簿中的联系人。所有信息仅存储在您的浏览器本地,不会传输到外部服务器。

    主要功能

    • 从系统 API 中隐藏:您的联系人不会与标准系统联系人 API 和设备电话簿同步。
    • 紧急密码:特殊密码,输入后,整个联系人数据库将立即且不可撤销地删除。
    • 导入和导出:通过 CSV 文件方便地传输联系人数据库以创建备份副本。

    网上申请:
    https://demensdeum.com/software/ghost-contacts/

    GitHub:
    https://github.com/demensdeum/GhostContacts

  • Raiden Video Ripper

    Raiden Video Ripper 是一个专为视频编辑和格式转换而设计的开源项目。它是使用 Qt 6 (Qt Creator) 创建的,允许您编辑视频并将其转换为 MP4、GIF 和 WebM 格式。您还可以从视频中提取音频并将其转换为 MP3 格式。

    微软商店:
    https://apps.microsoft.com/detail/9nvzjs98smgc

    GitHub:
    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

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.