Skip to content

CobePuppy/ComicReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ComicReader - 简洁的本地漫画阅读器

ComicReader 是一款使用 C++ 和 Qt 6 开发的桌面漫画阅读器,专注于提供流畅、舒适的本地漫画阅读体验。它支持多种文件格式,并提供可定制的界面主题和阅读模式。

App Screenshot (请将此处的 placeholder.png 替换为应用截图)

✨ 主要功能

  • 多种阅读模式:
    • 单页模式: 传统的翻页体验。
    • 连续滚动模式: 通过滚轮实现无缝的垂直滚动阅读,带来沉浸式体验。
  • 广泛的格式支持:
    • 直接打开包含图片的文件夹
    • 支持常见的单张图片格式 (JPG, PNG, BMP 等)。
    • 支持未压缩的 ZIP 存档 (.zip)。
  • 内置下载器:
    • 从支持的图源下载漫画。
    • 下载完成后自动将图片文件夹打包为 .zip 文件,方便管理和分享(同时保留原文件夹)。
  • 个性化界面:
    • 明亮/黑暗主题: 内置两套 UI 主题,可随时切换以适应不同环境。
    • 可调的用户界面: 简洁的工具栏和菜单设计,专注于阅读核心。
  • 阅读辅助:
    • 页面缩放、旋转和自适应窗口大小。
    • 状态栏实时显示当前页码/总页数。

🛠️ 构建指南

本项目依赖于 Qt 6 和 C++17 编译器。

依赖

  • Qt 6.2+ (Widgets, Gui, Network 模块)
  • C++17 兼容的编译器 (例如 GCC 9+, Clang 10+, MSVC 2019+)
  • MinGW (如果在 Windows 上使用 GCC)

构建步骤

  1. 克隆仓库:

    git clone https://github.com/CobePuppy/ComicReader.git
    cd ComicReader
  2. 配置项目: 使用 Qt Creator 打开 ComicReader.pro 文件,它会自动配置项目。

    或者,通过命令行手动构建:

    # 创建构建目录
    mkdir build && cd build
    
    # 运行 qmake (请确保 qmake 在你的 PATH 中)
    qmake ../ComicReader.pro
    
    # 编译 (根据你的环境选择合适的 make 工具)
    # 在 Windows (MinGW)
    mingw32-make
    # 在 macOS 或 Linux
    make
  3. 运行: 编译完成后,可执行文件将位于构建目录下的 releasedebug 文件夹中。

🚀 如何使用

  • 打开漫画: 点击“打开”按钮或使用菜单栏,选择一个漫画文件夹、图片或 .zip 文件。
  • 切换阅读模式: 通过菜单栏的“视图”->“连续模式”选项来切换。
  • 切换主题: 在“视图”->“主题”菜单中选择“明亮”或“黑暗”主题。
  • 使用下载器: 在“工具”->“下载”中打开下载管理器。

📝 待办事项与未来计划

  • 支持压缩的 ZIP/RAR/7z 格式。
  • 优化连续模式下的内存占用(懒加载)。
  • 保存用户偏好设置(如主题、窗口大小等)。
  • 完善下载器功能,支持更多图源和任务管理。

📄 许可证

本项目采用 MIT 许可证

一个正在演进中的现代化漫画阅读器,基于 Qt 6 (C++17) 开发。当前版本聚焦:

  • 本地目录阅读(支持直接打开图片文件夹)
  • 基础漫画解析框架(后续扩展 ZIP/CBZ、RAR/CBR、PDF)
  • 在线搜索 Dock + MockProvider 模拟搜索与“下载”流程(生成占位图片)
  • 简洁阅读界面(翻页、缩放、适应宽度)

后续将逐步引入真实站点适配、缓存优化、书签/历史、插件化 Provider 等特性。

🌟 当前已实现功能概览

📖 基础阅读

  • 打开本地目录中的图片序列:jpg/jpeg/png/webp/bmp
  • 页码导航(下一页 / 上一页)
  • 缩放与适应策略(后续拟添加适应高度、双页模式等)

⚡ 轻量预加载(雏形)

  • ReaderWidget 中简单的相邻页预载逻辑
  • 规划:LRU 内存缓存 + 可选磁盘缩略图缓存

⬇️ 下载(当前状态)

  • ✅ 串行队列(DownloadManager)
  • ✅ 任务进度 / 完成 / 失败信号
  • ✅ 自动生成保存目录(标题 + 时间戳)
  • ✅ 下载完成后自动打开为漫画
  • ✅ MockProvider 生成占位 PNG 模拟真实页面
  • 🔜 并行窗口 / 取消 / 限速 / 断点续传 / 真实网络

🛡️ 错误与日志(进行中)

  • 当前:简单状态提示 + Dock 文本日志
  • 规划:分级日志、文件输出、UI 过滤

🎨 界面

  • 主窗口 + 阅读器
  • 在线搜索 Dock(关键词输入 → 结果列表 → 详情 → 下载)
  • 状态栏简要反馈
  • 规划:主题 / 多标签 / 库视图 / 下载面板独立化

系统要求

  • 操作系统: Windows 10+, macOS 10.14+, Ubuntu 18.04+
  • Qt版本: Qt 5.15+ 或 Qt 6.2+
  • 编译器: 支持 C++17 的编译器
  • 内存: 最少 512MB RAM
  • 存储: 至少 100MB 可用空间

编译安装

前置要求

  1. 安装 Qt 开发环境

    • 下载并安装 Qt
    • 确保安装了以下模块:
      • Qt Core
      • Qt Widgets
      • Qt Network
      • Qt WebEngine
  2. 安装编译工具

    • Windows: Visual Studio 2019+ 或 MinGW
    • macOS: Xcode Command Line Tools
    • Linux: GCC 或 Clang

编译步骤

  1. 克隆代码

    git clone https://github.com/CobePuppy/ComicReader.git
    cd ComicReader
  2. 使用 Qt Creator 编译

    • 打开 Qt Creator
    • 选择 "打开项目"
    • 选择 ComicReader.pro 文件
    • 配置编译套件
    • 点击 "构建" 按钮
  3. 使用命令行编译

    # 生成 Makefile
    qmake ComicReader.pro
    
    # 编译项目
    make
    
    # Windows 用户使用
    nmake  # 或 mingw32-make
  4. 运行程序

    # 进入构建目录
    cd build/release  # 或 build/debug
    
    # 运行程序
    ./ComicReader      # Linux/macOS
    ComicReader.exe    # Windows

项目结构(当前实际)

ComicReader/
├── src/
│   ├── core/
│   │   ├── config/        # ConfigManager
│   │   ├── parsers/       # 漫画解析(目录 + 预留压缩/文档)
│   │   └── web/           # Web 搜索/下载(DownloadManager / WebSearchManager / MockProvider)
│   ├── ui/
│   │   ├── mainwindow/    # 主窗口
│   │   ├── reader/        # 阅读器组件
│   │   └── web/           # 搜索 Dock UI(SearchDockWidget)
│   ├── utils/             # 工具类
│   └── main.cpp           # 程序入口
├── include/               # 头文件目录
│   ├── core/             # 核心模块头文件
│   ├── ui/               # 界面组件头文件
│   └── utils/            # 工具类头文件
├── resources/            # 资源文件
│   ├── icons/           # 图标资源
│   └── styles/          # 样式表
├── tests/               # 单元测试
├── ComicReader.pro      # Qt项目文件
└── README.md           # 项目说明文档

使用说明(当前版本)

基本操作

  1. 打开漫画

    • 点击 "文件" → "打开文件" 选择本地漫画文件
    • 或点击 "文件" → "打开URL" 输入在线漫画地址
  2. 阅读控制

    • 使用工具栏按钮或键盘快捷键翻页
    • 滚动鼠标滚轮进行缩放
    • 拖拽图像进行移动
  3. 在线搜索与模拟下载

    • 视图 → 勾选“在线搜索”
    • 输入关键词点击“搜索”
    • 选择结果 → “下载所选”
    • 生成占位图片后自动打开阅读
  4. 个性化设置

    • 点击 "工具" → "设置" 打开设置界面
    • 根据需要调整各项配置

快捷键(当前实现子集)

  • Ctrl+O: 打开文件
  • Ctrl+U: 打开URL
  • Ctrl+D: 下载管理器
  • Ctrl+,: 设置
  • F11: 全屏切换
  • Space: 下一页
  • Backspace: 上一页
  • Ctrl++: 放大
  • Ctrl+-: 缩小
  • Ctrl+0: 重置缩放

Roadmap(阶段性)

短期(1.x):

  • ZIP / RAR / PDF 解析实现
  • 下载并行 / 取消 / 错误细化(重试策略)
  • Provider 体系稳定化(配置 / 限速)
  • 缓存与缩略图

中期(2.x):

  • 书签 / 历史 / 本地库索引
  • 真正站点 Provider(合规实现)
  • 日志中心与调试面板

远期(3.x+):

  • 插件化 Provider & UI 模块化
  • 云同步 / 多设备
  • 高性能异步解码 / 并行预取

扩展开发:自定义 Web Provider

WebProviderBase 接口简述:

class WebProviderBase : public QObject {
   Q_OBJECT
public:
   virtual QString name() const = 0;
   virtual bool supportsSearch() const { return true; }
public slots:
   virtual void search(const QString &keyword) = 0;
   virtual void download(const WebComicResult &res, const QString &targetDir) = 0;
signals:
   void searchResults(const QList<WebComicResult>&);
   void searchFailed(const QString &error);
   void downloadProgress(const DownloadProgressInfo &info);
   void downloadFinished(const QString &taskId, const QString &localPath);
   void downloadFailed(const QString &taskId, const QString &error);
};

实现步骤:

  1. 继承 WebProviderBase,实现 name() / search() / download()
  2. 在启动阶段通过 WebSearchManager::addProvider() 注册。
  3. search():发起网络请求 → 解析 → 组装 WebComicResult 列表(记得 sourceName = name())。
  4. download():逐页请求图片 → 保存到 targetDir → emit 进度 & 完成信号。
  5. 需要节流:使用 QTimer + 队列 或 QSemaphore 控制频率。

保存目录命名逻辑在 DownloadManager::buildTargetDir(),可自定义添加站点标识/章节号。

法律与版权合规声明

附带的 MockProvider 仅用于演示,本项目本身不提供也不鼓励分发受版权保护的未授权作品。

实现真实 Provider 时请务必:

  1. 遵守目标站点 ToS / robots 协议
  2. 不抓取或传播侵权内容
  3. 合理控制请求频率(限速 / 缓存)
  4. 标注第三方来源,尊重署名条款
  5. 遵守所在地相关版权与数据法规

维护者与贡献者不对不当使用造成的法律风险负责。

贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

代码规范

  • 使用 C++17 标准
  • 遵循 Qt 编码规范
  • 添加适当的注释
  • 编写单元测试

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

联系方式

致谢

  • Qt 框架团队
  • 所有贡献者和用户
  • 开源社区的支持

ComicReader - 让漫画阅读更加美好! 📚✨

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published