新作:Sunny Screenshot 是 截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能

26 篇文章 38 订阅
订阅专栏
4 篇文章 0 订阅
订阅专栏

简 述: 仅纯粹 C++ 开发了一款 Sunny 截图软件,原生应用;支持 “截图 & 钉图”、“图片翻译”、“OCR提取文字” 等功能,多套皮肤和 Win10 的亚克力效果(类透明磨砂),简洁整体设计的窗口,

官网: https://sunny.xmuli.tech

支持跨平台:已验证可运行在的系统 ヾ(≧▽≦*)o,详见官网文档

① Windows 7 / 8 / 10 / 11

② MacOS: 10 / 11 / 12 / 13 / 14

③ Linux:Debian 12,Ubuntu 20.04 / 22.04 / 24.04,Deepin/UOS V20-23, openkylin 1.0.x,等

现已上架 Microsoft Store 和 Linux 多个应用商城,撒花🎊🎊🎊🎉🎉🎉;

开发完之后一直也没有宣传过,寂静的在的一隅仓库呆着着; 直到连续几天发现涌入大量流量,Star 也随之猛长;蛤?着什么情况,我啥也没干了。问了下新人,才知 Sunny 已被很多大佬和知名软件网站给翻牌子了,属实意外惊喜╰(°▽°)╯。

文章目录

    • 描述
    • 官网
    • 功能特色
    • 相关文章
    • 标题演示效果
      • 视频
      • 截图
        • Windows 10/11+
        • MacOS 13+
        • Linux
          • Ubuntu 22.04
          • Deepin V20.9 / UOS
          • openkylin V1.0.1
    • 代码签名证书
    • 键盘快捷键
    • 应用商店下载
      • Microsoft Store
      • Deepin / UOS Store
      • Openkylin Store
      • Spark Store
    • 截图作品系列
    • 如何开发一款截图软件呢?
      • 【整体思路】
      • 【如何购买代码签名】
      • 【如何上架应用商城】
      • 【打包发布 Windows / MacOS / Linux 上】
      • 【UI / UX 设计的效果】
      • 【用户体验细节】
      • 【看不见的优化】
      • 【Qt / C++ 编码问题】
      • 【思路架构】
    • 番外:意外之喜
    • 系列地址


本文初发于 “ 偕臧的小站”,同步转载于此。


描述

Sunny 截图是使用纯 C++ 开发的一款简洁且漂亮的 “截图&拼图” 的软件工具,亦支持图片翻译和OCR 等功能;支持 Windows,MacOS,Linux 平台。

本项目从 2023 年起,至少会持续开发和维护十年,再更久的事情,那就彼时再说~;可以放心使用,因为我自身也在使用;

官网

官网: https://sunny.xmuli.tech | 作者: 偕臧

GitHub | Gitee | Releases | Issues | App Store : Microsoft Store / Deepin Store / UOS Store / Spark Store /

反馈 Bug, 提出建议或者想法,任何帮助改进,亦可加入交流群: 在这里插入图片描述

功能特色

  • 特色功能
    • 截图 & 钉图
    • 图片翻译(中/英/日/韩/俄/等)
    • OCR 提取文字
    • 窗口属性
    • 自动检测
    • 代码签名
  • 样式功能
    • 亚克力的透明磨砂
    • 自定义的活动色
    • 自定义"边框 & 十字线"的宽度
    • 绘画工具栏支持:垂直 & 水平
    • 钉图窗口的阴影效果
    • 钉图透明度
    • 多种系统风格
  • 其它功能
    • 自定义尺寸和位置截图、延时截图、窗口检测截图
    • 翻译和提取文字的 API,支持用私人 key
    • 手动保存 & 快捷保存 & 自动保存
    • 自动拷贝到剪切板
    • 调整字体及大小
    • 快捷键自定义
    • 国际化翻译
    • 开源库鸣谢
  • 跨平台移植
    • Windows 7 / 8 / 10 / 11+
    • Ubuntu 20.04 / 22.04+
    • Deepin / UOS V20.9 - 23+
    • openkylin V1.0.1+
  • App Store 已上架
    • Microsoft Store
    • Deepin / UOS Store
    • Spark Store
    • openkylin Store (Ongoing)

相关文章

  • 分享如何拥有一份私人的『开源代码签名证书』
  • Sunny截图上架Microsoft Store及Linux商店流程的指北
  • 嘿嘿!开发了一款 Sunny 截图 & 钉图,亦支持“屏幕识图”和“OCR”的软件
  • 基于 QT 开发 FLIPPED :简易且漂亮的跨平台截图贴图软件
  • 更多教程 → QtExamples

标题演示效果

视频

👉 Sunny 截图是一款简洁且漂亮的截图的软件工具,亦支持【图片翻译】和【OCR】

截图

Windows 10/11+

MacOS 13+

Linux
Ubuntu 22.04

Deepin V20.9 / UOS

openkylin V1.0.1


代码签名证书

极力推荐从 GirHub Release 下载,更新最快最稳定。下载文件后,右键属性校验其唯一性,确保文件没被篡改;

键盘快捷键

KeysDescriptionMode
F6窗口激活截图图全局
Ctrl + F6仅延时截图全局
Shift + F6自定义截图(起点位置 + 截图区域 + 延迟时间)全局
🐱‍🐉
Esc退出截图本地
Tab切换挡位,检测的子窗口矩形的深度本地
` / ~显示捕捉窗口的属性信息 (Path/Size/PID/HWnd …)本地
Ctrl + Shift + S快捷键快速保存到到指定的路径本地
, , , ( A, S, W, D )移动选中区域 1px本地
Ctrl + , , , 外扩选中区域 10 px本地
Shift + , , , 内缩选中区域 10 px本地

应用商店下载

Microsoft Store

在 Window 10/11+ 系统,也在微软商店直接下载


Deepin / UOS Store

深度社区、 统信操作系统商店中,已可直接下载

Openkylin Store

可直接商商店下载, 感谢 XXTXTOP 帮助上架此麒麟商店!

Spark Store

以及三方的星火商店,也可直接下载


截图作品系列

很久之前就想些一个软件截图的软件,目前一共写如下三个层级的难度作品,提供大家参考

  • Ⅰ. 新手之作 ShotX
    • 项目地址: ShotX | 镜像
    • 功 能:①基本的截图功能,复制和保存,②右键托盘及菜单,③支持 Window,MacOS,Linux,④攥写 Github-Action 的 CI/CD 自动脚本 .yml;实现自动打包和发布,⑤更多见 README 和 源码
    • 描 述:新手级的截图,适合初学 Qt/C++ 入门者
  • Ⅱ. 高级之作 FLIPPED
    • 官 网: flipped.xmuli.tech
    • 项目地址: FLIPPED | 镜像
    • 功 能:①贴图和钉图,②多屏截图,延时截图,自定义截图,③智能检测窗口矩形(Windows & Linux),④矩形、椭圆、箭头、画笔、马赛克、文本、序号,⑤撤销、重做(多级)、保存、取消、拷贝到剪切板,⑥截图框样式三套,且主题色提供自定义;屏幕十字线样式自定义,⑦国际化:英文、简体中文、繁体中文;字体和字号自定义,⑧支持设置窗口,托盘,截图区域之间的流畅切换,⑨更多见 README 和 源码
    • 描 述:高级难度,适合已学习 Qt/C++ 数年经验进阶,需同类型软件的代码借鉴,但可探索中独立写一个大的软件。出发于隐私安全,无任何联网功能。
  • Ⅲ. 商业级别的成熟之作 Sunny (推荐)
    • 官 网: sunny.xmuli.tech
    • 项目地址: Sunny | 镜像
    • 功 能:是 FLIPPED 作品的超集合,常见截图功能都都包含。还包含额外的功能:① “图片翻译” (中/英/日/韩/俄等),和"OCR 提取文字",也支持用户私人token 的额度使用 ,② .iss 脚本和 CMake 来提供便携版,安装版,③ 绘画工具栏的亚克力效果,且支持跨平台(毛玻璃效果),④编辑文本支持富文本,同一个注释可采用多个字体和颜色等(暂未遇到其它同类软件也能做到),⑤全新的 UI/UE 设计交互,“设置窗口” 无任何缝隙拼接感,颜值达到简约美观,⑥优化截屏完成后的内存释放;⑦国际化翻译更方便,⑧CMake 重写拆分为 EXE + DLL 隔离,⑨进行代码签名,方便下载校验和防篡改,⑩成功上架 Window 的微软商店,Linux 的 深度/统信商店,以及三方的星火商店等;麒麟商店也在上架待审核
    • 描 述:基于前两个的项目经验和不足,直接重写了一套新的框架和UI界面;目前个人从代码功能和产品体验来说,已经达到 工程代码整洁、规范、稳定和健壮性,优秀的解耦机制,漂亮简约得 UI / UX 设计,可以随时应对变化的实际需求,很久之内都无需重构了。定位为 漂亮和简洁,功能实用为主。
项目描述开发经验
ShotX功能极简的截图工具简易,新手级的截图,适合初学 Qt/C++ 入门
FLIPPED简洁且漂亮,功能完整的截图软件;隐私安全,无任何联网功能高级难度,属 Qt/C++ 数年经验的进阶作品,在借鉴同类作品的代码时,可于探索中独立完成的一个大的软件
Sunny一款简洁且漂亮的截图的软件工具。亦支持图片翻译和OCR;已上架微软商店,深度/统信商店,及三方的星火商店等专业级作品,适合已多年沉浸研究 Qt/C++ 经验,随心所欲写任意所需功能,属于商业级的成熟作品,是本截图系列的最高水准之作

注: ShotX,FLIPPED,Sunny 这三款均支持跨平台 Windows / MacOS / Linux。

笔记: Sunny = FLIPPED的功能重构 + 代码重构 + UI重构 + 网络功能(图片翻译+OCR)+ 上架应用商店 + 后续新功能;而 ShotX 是最早的练手探索

如何开发一款截图软件呢?

在写和发布的后的期间,也遇到很多私聊请教 、 邮件沟通某个功能实现?反馈 Bug 和给出使用心得和建议;都给答疑了,但想来可写为一整篇,中间遇到的困难点都写出来,公开出来提供后来者参考。

编译环境

💻 MacOS 13 📎 Qt 5.15.2 📎 gcc/g++ 9.2 📎 gdb8.3

💻 Ubuntu 22.04 📎Deepin 20.9-23+ 📎 Qt 5.15.2 📎 gcc/g++ 9.0 📎 gdb8.0

💻 win10 22H2 📎 Qt 5.15.2 📎 Visual Studio 2022 📎 C++17

【整体思路】

  • 基础窗口: 创建一个 QWidget 窗口,去掉标题栏后,全屏且置顶,捕获此刻多屏幕状态保存为 QPixamp,然后绘画在 QWidget 最底层,再绘画一层透明黑色作为遮罩
  • 绘画工具栏: 作为是一个单独的子窗口,包含两个一级和二级的绘画工具栏,控制二级的显隐
  • 鼠标光标: 将 QWidget 放于虚拟桌面的左上角;相对坐标和绝对坐标的转换
  • 功能思路: 时刻判断当前所处模式:Wait / Select / Move / Draw / Stretch 标记;根据模式标记,对鼠标的 Press / Move / Release 事件进行对应的操作;重点是鼠标放下和松开时的 QPoint
    • 捕获模式:智能窗口 / 全屏截图 / 延时截图 / 自定义截图 等
    • 绘画模式则细分:一级绘画栏和二级绘画栏(愈加精确的参数)
    • 拉伸可为:拉伸已绘图形 / 选中框 / … ,操作是可见区域的任意一个图案
    • 移动同上
  • 钉图功能: 独立的窗口,将图片绘画在最底层,且需要重绘缩小一圈,为毛玻璃的彩虹灯预留位置
  • 杂项但重要: 国际化,不重启切换语言字体,编译,打包,CI /CD,热键,窗口尺寸遍历,显示窗口详细信息及大小,代码签名证书,上架应用商店;太多了,单独成篇写在下面

【如何购买代码签名】

  • 『问题』写的 EXE 如何进行代码签名?如何购买代码签名,怎么买最便宜?EV / Standard / Open Source Signing Certificates 的区别是什么?

    详细解答这些问题 《 分享如何拥有一份私人的『开源代码签名证书』》,并且指导最后如何签名。


【如何上架应用商城】

  • 『问题』如何上架到微软的 Microsoft Store?如何上架 Linux 的深度/统信/麒麟商城,以及如三方的星火商店呢?

    篇幅太长,单写了一篇,包含详细上架 Windows Store, Deepin/UOS Store, 三方 星火商店等。

    👉 《 Sunny截图上架Microsoft Store及Linux商店流程的指北》

    Note:

    个人作品上架微软商店的流程很折磨,最后上架成功后也是拨开云雾;

    若是文章对你有价值,亦可帮我积累Sunny的微软信誉,或者在深度商店的好评,甚至感谢🙇‍ ;

    Windows 用户推荐的下载 👉 Sunny_setup_msvc_1.3.0_x64.exe


【打包发布 Windows / MacOS / Linux 上】

介绍多种平台和格式:①Windows:绿色便携版和安装包 .exe ②MacOS:.app.img ③Linux: 绿色版、 .deb.AppImage

  • 『问题』Windows 如何构建打包为 .exe 文件?如何生成构绿色版和安装版?

    《 QT 项目在 Windows 平台上面发布成可执行程序》

  • 『问题』MacOS 如何构建打包为 .dmg 文件?

    《 QT 项目在 MacOS 平台上面发布成可执行程序》

  • 『问题』Linux 如何构建打包为 .deb 文件、如何打包为通用的 .AppImage 格式?

    • Linux下又多种打包 .deb 打包方法:

      • 〖方法一〗通过 ldd.sh + Sunny.sh 两个脚本打包依赖,参考《 QT 项目在 Linux 平台上面发布成可执行程序》

      • 〖方法二〗通过 dh_make + dpkg-buildpackage 命令《 Linux 中用 dh_make 将 Qt + CMake 项目打包为 deb 文件》

      • 〖方法三,最推荐〗通过 CMake 的 cpack 命令,那样就不需要填写 debian 文件夹下的 control 等文件,直接拷贝相关资源文件过去。 CMakeLists.txt 底部加上 CPack 的相关代码,核心如下:

        # CPACK: General Settings
        set (CPACK_GENERATOR "TBZ2")
        set (CPACK_PACKAGE_NAME "${project_name}")
        set (CPACK_PACKAGE_VERSION "${project_version}")
        set (CPACK_PACKAGE_VENDOR "https://github.com/XMuli")
        set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple and beautiful screenshot software tool for Windows, MacOS and Linux")
        set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
        set (CPACK_PACKAGE_CONTACT "https://sunny.xmuli.tech")
        # 设置Debian软件包的依赖关系
        set (CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5x11extras5, libqt5svg5")
        set (CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
        set (CPACK_DEBIAN_PACKAGE_SHILIBDEPS ON)
        
        include(CPack)
        
    • Linux下有多种打包 .AppImage 打包方法

      #【方式四】使用 linuxdeployqt 方式打包,在 Ubuntu 22.04 打包,不可以使用 -----------------------------
      ####linuxdeployqt-continuous-x86_64.AppImage 方案可在 Ubuntu 22.04 上面不可行####
      $ ../linuxdeployqt-continuous-x86_64.AppImage Sunny -appimage
      $ sudo apt install  libfuse2
      
      但是由于过于作者的固执坚守旧的版本,所以无法使用,理由和可能的解决如下:
      https://github.com/probonopd/linuxdeployqt/issues/340#issuecomment-932712016
      即:使用linuxdeploy和linuxdeploy-plugin-qt
      
      #####linuxdeploy-x86_64.AppImage + linuxdeploy-plugin-qt-x86_64.AppImage 下面方案可行#####
      https://github.com/BearKidsTeam/thplayer/blob/master/.github/workflows/linux.yml#L54
      
      $ sudo apt update
      $ sudo apt install qtbase5-dev qtmultimedia5-dev libqt5multimedia5-plugins
      $ sudo add-apt-repository universe
      $ sudo apt install libfuse2
      
      $ wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
      $ wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
      $ chmod +x linuxdeploy*.AppImage
      
      $ mkdir build && cd build
      $ cmake ..
      $ cmake --build . -j$(nproc)
      $ cd ..
      
      $ ../linuxdeploy-x86_64.AppImage --appdir AppDir -e bin/Sunny -d bin/resources/cpack/tech.xmuli.sunny.desktop -i bin/resources/logo/logo.svg --icon-filename tech.xmuli.sunny -p qt -o appimage
      
      $  ./linuxdeploy-x86_64.AppImage --appdir AppDir -e build/thplayer -d assets/thplayer.desktop -i assets/thplayer.svg --icon-filename thplayer -p qt -o appimage
      $ mv TouHou_Player*.AppImage thplayer-linux.AppImage
      
  • 『问题』如何书写 .yml 的脚本,通过 GitHub 的Action 资源,自动打包构建生成 Release 呢?

    通过写三个系统的 .yml 脚本,路径必须是 .github/workflows ,随着时间的流逝⌛,想要持续构建对应的云系统和 Kit 也必须更新,文档和版本参见 images ,直接往 .yml 修改;这是一个实际可跑的脚本 *.yml 都是可以编译成功的,失败可能是额度时间不够了,如某次成功的示例,可看到头像是 GitHub 的头像发布的 Release-v6.1 ;


【UI / UX 设计的效果】

  • 『问题』截图的一级二级的菜单工具栏,如何实现 Windows7 的透明磨砂 / Windows 的亚克力的效果,且能够支持 Windows / Linux / MacOS?

    单纯实现亚克力效果不难,难在Linux和 MacOS 上也能实现这个效果?这是当时的一些探索和经验,总结了四种方法放置于 GitHub - AcrylicWindow

  • 『问题』如何实现一个完美的无边框窗口跨平台,且还要占用低,没有瑕疵BUG,还能白嫖?

    也折腾过,难度也很大,后来发现对于截图,费力可以实现,但是没必要,成本太大;结论:这样现成的没有,目前效果和跨平台都最佳的方案是 framelesshelper, 有时放弃也是一种解决方案。

  • 『问题』如何实现国际化多语言的切换?尤其是未使用 Qt Designer 来创建 .ui 文件,遇到无 ui->retranslateUi(this) 函数?不重启软件便可以切换语言

    对于有有 .ui 的部分,可以通过 《 Qt 项目(CMake)设置国际化支持》来解决。对于存手写的控件实现的,且大致实现的思路是:

    下拉框中切换语言时,发射信号 → 全局单例 → 信号和槽函 → 到主窗口的槽函数,在里面进行重新加载语言,所有相关的控件的默认文本,都写在这个函数里面,便可以不重启软件,直接实现语言切换成功

  • 『问题』


【用户体验细节】

  • 『问题』是否需要管理员权限才能运行?

    全程不会弹 UAC 弹窗,不需要管理员权限就可以使用所有功能,也不会中途提权,仅普通用户权限即可,包括导向安装,静默安装,使用卸载;

  • 『问题』Windows 和 Linux 支持一次截多个屏幕,MacOS 仅只能截图单个屏幕,如何实现呢?

    MacOS 除了系统自带的截图支持外,至今没有任何一个三方软件可以做到这点,包括大厂等某企鹅的截图的,无解。根原是属于此苹果接口没公开,至少没人能够发现。

  • 『问题』如何确保 MacOS 上的效果和 Window上面保持外观的一致?

    一个难点是再 MacOS 上也要和再 Windows 的效果保持一致,于是对不同风格进行对比,但 Fusion 又会倒是 Setting 窗口非原生的样式,但好在十分接近;选取一个平衡点。另外还手绘画了一个二十多个自定义或者复杂控件。


【看不见的优化】

  • 『问题』如何解决使用 ESC 取消截图后的内存泄露问题?QPointer 、智能指针、还是单例?

    也花了大力气来探究,在完成一次截图之后,内存的占用会在合适时机自动释放出来;这是定位在消耗内存的变量;开发环境显示器为 4K 27 寸 + 3K笔记本双屏;

  • 『问题』对于使用单例模式不止一处时,有序需要多个单例用来传递或者保存数值时候,重复写很容易

    可采用 奇异递归模板的方式,然后添加一个宏展开为友元类;多个单例都只用写一份,而前提是需要对 《 C++ 类的六个特殊成员函数》 很熟悉,才能理解,属于优雅的一种实现。

  • 『问题』日志和崩溃生成 DUMP 记录?

    日志可以通过配置文件修改,若是遇到传说的崩溃,亦会自动生成 .dmp 和 崩溃原因;

    转储文件存放: C:/Users/用户名/AppData/Local/XMuli/Sunny/cache/Sunny_Dumps/dump_2024_02_29_11_31_30_714.dmp

    实现方法可通过 WIN API 来实现

    #ifdef _MSC_VER
     SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数
    #endif
    

    额,你没接触过 DUMP,完全不会对其进行解剖分析?也简单写了一个使用 WinDbg 进行入门

    《 WinDbg:入门分析 dmp 文件『一』》、《 WinDbg:调试之附加进程生成 dmp『二』》

  • 『问题』希望单例运行EXE,确保全局唯一性?

    可以通过共享内存QSharedMemory 和系统信号量 QSystemSemaphore,双重保证程序在一台终端上,仅会运行一个;

    也能杜绝很罕见的一种情况,即使上次程序崩溃之后,但仍有残留的僵死进程,被误判当前没有启动。严谨(中指推一下眼镜)

    QString uniqueKey = "SunnyUniqueKey"; // 使用唯一的标识符来创建共享内存和系统信号量
    QSharedMemory sharedMemory;
    sharedMemory.setKey(uniqueKey);
    
    // 尝试附加到现有的共享内存并分离
    if (sharedMemory.attach()) {
        sharedMemory.detach();
    }
    
    // 尝试创建共享内存,如果已经存在,表示已经有一个实例在运行, 判断是为了确保在同一台计算机上只能运行一个相同实例的程序。
    if (!sharedMemory.create(1)) {
        qDebug() << "There is already an instance of the application running (by QSharedMemory)!";
        return 1;
    }
    
    // 创建系统信号量, 再尝试获取系统信号量,如果已经被其他实例持有,程序就退出, 判断是为了确保在多个进程同时启动时,只有一个进程能够继续执行。QSystemSemaphore用于创建系统信号量,如果系统信号量已经被其他实例持有(比如由于上一次程序异常退出导致信号量未被释放),则acquire函数会返回false,
    QSystemSemaphore systemSemaphore(uniqueKey, 1, QSystemSemaphore::Open);
    if (!systemSemaphore.acquire()) {
        qDebug() << "There is already an instance of the application running (by QSystemSemaphore)!";
        return 1;
    }
    
    // ...程序其它逻辑
    
    // 释放系统信号量
    systemSemaphore.release();
    

【Qt / C++ 编码问题】

  • 『问题』截图项目运行直接置顶显示后,按下按键后,窗口无任何响应,需额外点击一下才能开始截图?

    分析和解决方案《 Qt新弹窗不响应键盘按键,难道也是无焦点?》

  • 『问题』热键输入框控件,输入后显示的方块 ■◆ 乱码?

    分析和解决方案《 创建 QKeySequenceEdit() 后,显示方块■◆乱码》,还是多看下 Qt Assistant 解围粗心。

  • 『问题』使用 VS2022 和 QtCreator 如何调试 Qt 5.15 的源代码?

    解决方案为《 VS2022 And QtCreator10 调试 Qt 源码教程》、《 VS2017调试Qt源码》

  • 『问题』截图会有很多个属性的校验和“且”的属性使用?

    虽简单,但移除标志位容易忘却,这里简单列举一下《 C++ 标志位使用:校验、添加、删除》

  • 『问题』Qt Creator 报警告⚠ Misleading indentation; statement is not part of the previous ‘if‘

    那日强迫症,且需要删除空格才能解决,属实比较稀少;记录下解决方案 《 Misleading indentation; statement is not part of the previous ‘if‘》

  • 『问题』重构此版时候,也会大量使用 Lambda 表达式

    展开讲解一下,若未接触过,属会用会看即可《 Lambda 表达式详解》

  • 『问题』Visual Studio 断点偶遇进不去相关函数?

    Release实际也是可以调试的,新手容易不知晓,知晓的亦可能会翻车,值得记录下;属于 Release / Release with Debug Info / Debug 的差异《 Visual Studio 断点调试之箭头偏移进错函数,捉虫记》

  • 『问题』源码不能外发的情况下,如何进行调试?

    详细示例《 Visual Studio 2019 进行远程调试》


【思路架构】

  • 『问题』 Sunny 截图在在不同系统、编译器上开发、使用不同的 Kit Tools 上面如何解决乱码问题?且有时调试窗口乱码?还有 ANSI,UTF8,UTF8-BOM 采用哪种?

    参考《 愿编程不再乱码(含Qt)-根因深究》,以及 QtExamples 的 “「第 6 章」 QT / IDE 乱码根因和解决”

  • 『问题』 遇到需要使用的开源三方库,如何优雅的使用 Git 管理,确保拉取三方库即最新,又不会打乱本仓库的历史线?

    开源三方库引入,想要优雅,基本 git submodulegit treemodule 命令之间二选一;推荐前者,理由为 《 git submodule 基本用法》

  • 『问题』 如何选用 LOG 日志库?自己简单封装一套,还是选用开源库?便于后面定位和分析

    比较犹豫和纠结的一个问题,两种都试过;现总结为:项目初期使用自带的 QDebug 即,不够用再写一个类,和宏封装一套,满足需求即可,勿跑偏,功能才是重点。最后期可以选用三方库引入:

    一点经验参考 《 Log:日志选型调研『一』》、《 Log:日志之 Spdlog 极简用法示范『二』》、《 Log:日志之 Spdlog 核心构成『三』》

  • 『问题』CMake 管理跨平台项目,生各平台的 IDE 的解决方案?以及 Window 上自带一些基础宏的数据类型含义?

    现在已经幸福多了,ChatGPT 横空出世,已经可以解答了,故介绍一些高频或者重点宏,自己结合去搜🔍

    CMake 的重要宏:《 CMake 设置 Target 输出目录和后缀名》、《 CMake 之 BUILD_SHARED_LIBS 和 CMAKE_BUILD_TYPE 用法教程》

    Windows 的重要宏:《 LPSTR/LPCSTR/LPTSTR/HWND/HANDLE/HMODULE/HINSTANCE 等含义和区别》


  • 【编译遇坑】【杂谈经验总结】等有空再更

番外:意外之喜

分享一下喜悦

在 v1.3 发布的那天晚上,记得 downloads 是 900+ 的样子;发布完了就去睡觉了。

第二天早上一看下载量就是 1k, 1.1k;中午再看一眼就是 1.2k;晚上再看就是 1.3k;

第三天是 1.4k,

第四天是 1.5k,

… …哈哈哈哈哈哈哈哈哈, 放假回家过年了,也没怎么看

约大大前天回来一看,嗯,还是 1.5k,大家玩的开心愉快

大前天到了 1.6k

前天到了 1.7k

昨天号到了 1.7k

今天的到了 1.8k , 纪念打卡(–写这篇时)

在写过的所有软件中,总的下载量虽然不是最大的,但短时间增速率长是最快的 ヾ(≧▽≦*)o。


系列地址

QtExamples 欢迎 star ⭐ 和 fork 🍴 这个系列的 C++ / QT / DTK 学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!

ScreenShotTools:ScreenShotTools是一个Android长截图工具
03-11
5. 各截图提供拼接头部和尾部功能 使用方法: gradle配置 在最外层的build.gradle中添加maven地址(已预定的JCenter,本步骤可以忽略) allprojects { repositories { .. maven { url '...
screenshotgun:具有云支持和服务器部分的跨平台截图程序
02-05
screenshotgun”是一款跨平台截图工具,其特色在于结合了云存储功能和服务器组件。这表明该程序不仅可以在多种操作系统上运行,如Windows、Linux、Mac OS等,还具备将截取的图片上传到云端的能力,便于用户在...
跨平台的优秀截图软件flameshot——Linux下替代snipaste
sherpahu的博客
09-30 614
https://github.com/lupoDharkael/flameshot 功能丰富,极为优秀 windows下下载方法https://imgur.com/a/90DK6yU Manjaro下 sudo pacman -Ss flameshot 在设置中开启贴图、文字
Sunny 截图上架 Microsoft Store 及Linux等商店的指北
02-28 1299
详细介绍如何上架Windows商店的流程,配上流程!用自己写的 [Sunny 截图](https://github.com/XMuli/SunnyPages) 应用软件如何上架到 微软商店 | Microsoft Store 和 Deepin Store 等; 即使现 2024 年,但这份指南的详细程度也是的网上首份的,亦含 Linux 商店的上架流程,**敬热爱,敬开源,敬自己;** 详细介绍如何上架Windows商店的流程,配上流程!用自己写的 [Sunny 截图](https://github.
Umi-OCR 图片文字智能识别软件,不需联网,Linux 下运行错误修复,AI 识文一文搞定!
u010912615的博客
08-15 949
一款开源好用的 OCR 批量图片文字识别软件,本地安装运行,不需要联网,支持 pdf、epub等格式的文件导入识别。
截图工具】把图片在桌面上的截图工具——QQ截图、Snipaste
热门推荐
Summer_may的博客
03-02 1万+
截图工具】把图片在桌面上的截图工具——QQ截图、Snipaste。偶然发现,想要实现【把截图在桌面上】的效果,知道怎么实现的人多,不知道的也多。所以就想单纯分享下使用的软件,希望可以帮助不知道的朋友呀~
Snipaste:一个简单好用的截图工具
_闪闪发光的博客
04-02 1009
本篇文章介绍了一个很好用的截图工具,列出了几个常用的功能,并附上官方用户手册。
非常实用的截图小工具--Snipaste
qq_38937742的博客
05-12 640
非常实用的截图小工具–Snipaste Snipaste Snipaste ,顾名思义,Snip + Paste,截图 + 贴图,这也是这款 Windows 利器的两大主要功能。 快捷键:F1 进行截图 可以将截图在屏幕上,非常好用,而且比较的好看。 ...
node-desktop-screenshot:跨平台屏幕截图模块,使用外部工具
05-04
支持Windows(win32),OSX(darwin)和Linux平台 Windows版本使用nircmd( )Linux版本使用scrot 可用选项 质量:JPEG质量(0到100) 宽度:与高度结合使用,或单独使用以保持长宽比 高度:与宽度结合使用,或单独...
终极截图工具:Ultimate Screenshot Tool 3.56
08-15
易于使用,在任何地方都有最多的功能和自定义选项,在所有平台和管道上的游戏和编辑器中轻松捕获、编辑和共享高清屏幕截图。 WebGL演示-文档-Gif组合 轻松截图: -在编辑器和游戏中轻松截取高清屏幕截图! -预览您的...
web-screenshot:A screenshot tool for web page. web页面截图工具
05-10
网络截屏 网页的屏幕截图工具。 web页面截图工具。 用法 首先安装NodeJS和NPM 。 git clone git@github.com:yutingzhao1991/web-screenshot.git cd web-screenshot npm install npm start 然后使用可以访问以获得...
linux截图翻译,图片实时识别翻译大师
weixin_36074841的博客
05-26 524
图片实时识别翻译大师是一款利用拍照识字帮助在线翻译软件,非常专业的翻译功能,能够帮助用户快速的将图片内的文字进行翻译,大大提升了用户的工作效率,而且图片实时识别翻译大师app中还有智能的识别技术,准确无误的进行翻译图片实时识别翻译大师app特色【文件管理】图片实时识别翻译大师app可以统一管理图片识别结果文件,保留需要的文件。【灵活选择】手指流畅顺滑,即可分块选择需要的文字,想要哪段点哪段(想...
Linux带箭头的截图软件,Flameshot:你们要的超强Linux截图软件
weixin_36317943的博客
05-05 433
Linux下的截图软件很多,有系统自带的简单截图,当然还有站长最常用的 Shutter,不过这里推荐一款强大的截图软件Flameshot。那么 Flameshot 有啥过人之处呢?Flameshot 是一款开源软件新秀,其操作简单、直观,功能强大,关键是符合很多 Windows 用户的使用习惯。安装后,它会在形子菜单中创建启动器。Flameshot菜单位置启动Flameshot后,Flamesh...
Flameshot:强大的开源截图工具
最新发布
gitblog_09267的博客
09-13 455
Flameshot:强大的开源截图工具 flameshot 项目地址: https://gitcode.com/gh_mirrors/fla/flameshot 项目基础介...
ubuntu linux安装屏幕截屏软件shutter
gisbbs的专栏
02-21 244
经常需要PC截屏,然后做一些图片的编辑,就像QQ的的截屏功能。 网上找了一些文章,综合起来,推荐最多的还是shutter的,于是我安装并测试了一下可以。 写个日志记录一下。系统是ubuntu sudo apt-get update sudo apt-get install shutter 安装成功后可以在,ubuntu的搜索里搜一下shutter,点击启动。 第一次启动会一个设置,记得...
Misleading indentation; statement is not part of the previous ‘if‘
08-08 1859
使用的 Qt 升级到了 5.15.2,然后 IDE 编译报警告⚠如下,强迫症犯了,得消除掉。学习,附学习由浅入深的目录。,即可消除此警告⚠;
deepin或UOS的实用软件推荐
分享编程技术,让编程的世界没有孤岛。
03-26 1848
deepin或UOS的实用软件推荐
好用的跨平台开源截图工具推荐--flameshot
学习足迹
01-04 6586
flameshot 是一款跨平台截图工具。推荐给大家。
修改代码,如何压缩保存图片?:screenshot = pyautogui.screenshot(screenshot_path)
05-17
你可以使用Pillow库来实现压缩并保存图片。需要先安装Pillow库,可以使用以下命令: ``` pip install Pillow ``` 然后修改代码如下: ``` import pyautogui from PIL import Image # 设置截图保存路径 screenshot_path = 'screenshot.png' # 执行截图操作 screenshot = pyautogui.screenshot() # 压缩并保存截图 screenshot.save(screenshot_path, optimize=True, quality=75) ``` 在保存时,我们可以设置 `optimize` 参数为 `True` 来启用压缩优化,同时可以设置 `quality` 参数来控制压缩质量。压缩后的图片文件大小会相应变小,但会有一定的损失。可以根据实际需求调整压缩质量。
写文章

热门文章

  • VS2017专业版使用最新版Qt5.9.2教程(最新教材) 98533
  • Debug Assertion Failed! 错误解决 (关于文件文件写入程序) 78524
  • PHP的环境搭建(艰辛搭配经历,最后终于搭建好了。HTTP Error 404. The requested resource is not found.解决方法之一) 53867
  • VMware 安装好的系统 复制 (迁移) 到另外一台干净的电脑 39022
  • WinDbg:入门分析 dmp 文件『一』 24131

分类专栏

  • 专栏 - QtExamples系列 64篇
  • 专栏 - 项目实战开发 26篇
  • 学习 - Qt 129篇
  • 学习 - C/C++ 序一 技法 63篇
  • 学习 - C/C++ 序二 经验 24篇
  • 学习 - C/C++ 序三 商业 4篇
  • 学习 - CMake 2篇
  • 学习 - Linux 50篇
  • 学习 - MacOS 19篇
  • 学习 - Windows 36篇
  • 学习 - Git 15篇
  • 学习 - Hexo 13篇
  • 学习 - Doxygen 6篇
  • 学习 - PHP 1篇
  • 学习 - ASP.NET 5篇
  • 学习 - OpenMesh 2篇
  • 学习 - Database 6篇
  • 学习 - 网络 7篇
  • 学习 - 设计模式 1篇
  • 学习 - 底层兼架构 13篇
  • 生活 - 阅读 2篇
  • 生活 - 闲暇的趣闻 16篇

最新评论

  • 愿编程不再乱码(含Qt)-根因深究

    楼兰公子: 深深折服辣

  • Git Bash 在win10 显示中文为数字的解决方案

    geek_Chen01: 我还是乱码;解决办法如下: 在cmd下。右键属性,将当前代码页的值改为65001(具体改法参考修改注册表)

  • #pragma once与#ifndef两种防止头文件二次编译的区别

    Looking Gold: #pragma once现代大多数编译器都支持吧

  • 新作:Sunny Screenshot 是 截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能

    偕臧x: 开源在 https://github.com/orgs/SunnyScreenshot/repositories 早期版本全部开源 FLIPPED 和 ShotX;

  • 新作:Sunny Screenshot 是 截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能

    飞天猫_: up主你好,下载感受了软件的使用,很棒的体验,想请问项目开源吗?

大家在看

  • SSM框架之MySQL事务
  • 【Vulnhub靶场】Kioptrix Level 5
  • C语言 动态数据结构的C语言实现单向链表-2
  • sqlmap使用方法
  • 基于Multisim的密码锁的控制电路设计与仿真 279

最新文章

  • Sunny 截图上架 Microsoft Store 及Linux等商店的指北
  • 为 Windows10 22H2 启用 Microsoft Copilot 功能
  • 简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate → 不需登录
2024年5篇
2023年4篇
2022年37篇
2021年34篇
2020年82篇
2019年112篇
2018年41篇
2017年16篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家陕西玻璃钢仿真雕塑开远市玻璃钢雕塑多少钱玻璃钢卡通雕塑特色丽江市玻璃钢雕塑哪家好白银公园玻璃钢雕塑订做长春仿铜玻璃钢雕塑公司室内玻璃钢雕塑设计制作长春玻璃钢人物雕塑公司玻璃钢雕塑虎威威信阳不锈钢景观玻璃钢雕塑公司商场连廊美陈外墙沈阳小区玻璃钢雕塑安装孙河商场美陈新年商场美陈布置菏泽佛像校园玻璃钢雕塑厂家山东秋季商场美陈有哪些雕塑一个玻璃钢人物多少钱绥化玻璃钢雕塑设计舟山玻璃钢人物雕塑河南景区玻璃钢雕塑定制益恒玻璃钢雕塑美陈商场策划潮州人物玻璃钢动物雕塑新民玻璃钢长颈雕塑江门好用的玻璃钢雕塑浦口商场国庆美陈河北玻璃钢雕塑报价商场美陈雕塑什么价格天津人物玻璃钢雕塑多少钱红色大玻璃钢花盆价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化