Brief note on heic to jpg
本文记录一下把 HEIC 文件批量转换为 JPG 文件的方法,代码如下。
在使用这个脚本之前,需要在命令行中使用 brew install imagemagick 命令来安装 imagemagick。
12345678910111213141516171819202122232425262728293031323334353637import osdef heic_to_jpg(heic_path, jpg_path): command = f'magick convert {heic_path} {jpg_path}' os.system(command)def rename_files_in_folder(folder_path, start_number): # 获取文件夹中的所有文件 files = os.listdir(folder_path) # 只处理.HEIC文件 heic_files = [f for f in files if f.lower().endswith( ...
Game Programming in C++ - Chatpter 01: Game Prgramming Overview
Intro本章先介绍如何在 macOS 中设置开发环境,然后讲解实时游戏的核心概念:游戏循环、游戏如何随时间更新,以及游戏输入和输出的基本知识。同时,本章会在最后实现一个简单的 2D 游戏《Pong》。
配置开发环境为了创建游戏窗体,我们需要使用一个跨平台的第三方库,Simple DirectMedia Layer(SDL),它负责处理创建窗体、2D 图形、音频输出、键盘输入等过程。
打开终端,使用 brew install sdl2 命令,就可以一键式的安装好 SDL。
利用 brew info sdl2 可以用来查看安装信息。
安装好了之后应该就能够在 /usr/local/Cellar/sdl2 的安装目录下看到。
接下来分别讲如何在 Xcode 和 CLion 中进行配置。
Xcode在创建好一个项目后,按照以下步骤进行设置:
在 Xcode 左侧栏点击项目进入项目管理界面
进入 Build Phases 界面
在 Link Binary With Libraries 一栏点击添加符号
在弹出界面中选择 Add Files
在路径 /usr/local/Cellar/sdl2 ...
C++: Collections
Intro集合提供了一种存储数据的方法。C++ 标准库(STL)提供了许多不同种类的集合,因此了解何时使用哪些集合是非常要的。这篇文章里将讨论 C++ 中常用的集合。
Big-O 表示法Big-O 表示法用于描述一个算法的运行时间和占用空间随着问题规模的扩展而相应扩展的速率,这个速率分别被称为时间复杂度和空间复杂度。
接下来我们主要讨论时间复杂度,空间复杂度与它的情况类似。
下表列出了最常见的从最快到最慢的时间复杂度。具有指数或更慢的时间复杂度的算法太慢,一般不会使用。
Big-O
描述方法
应用实例
O(1)
Constant 常量
在链表前端插入元素,查找数组内的某个元素
O(\log n)
Logarithmic 对数
二分查找
O(\sqrt{n})
Square Root 平方根
O(n)
Linear 线性
线性查找
O(n \log n)
Linear Logarithmic 线性对数
归并排序,堆排序
O(n^2)
Quadratic 二次方
插入排序,冒泡排序,选择排序
O(n^3)
Cubic 三次方
O(2^n)
E ...
未读
To-do List
ChatGPT Prompt Engineering for Developers
Computer Network: Physical Layer
Prototyping
Note on Markdown
Note on SQL
C++: Concepts for OOP
IntroC++ 通过类来实现面向对象的编程。本文将介绍一些在 C++ 中使用类的时候可能会引起一些问题的主题。
引用、const 和类通过按值传递把对象传递给函数的效率很低。因为复制对象的操作可能需要高昂的计算代价,特别是当对象拥有大量的数据的时候。因此,在 C++ 中,最佳的实践方法是通过引用传递对象。
但是,按引用传递对象带来的一个问题是,引用允许函数修改类的参数。假设有一个用来检测两个圆是否相交的函数 Intersects,它接收两个 Circle 对象作为参数。如果 Intersects 函数通过引用来接收这两个 Circle 对象,它就可以修改这两个 Circle 对象的中心或半径。
在 C++ 中,对这个问题的解决方案是使用常量引用(const 引用)。const 引用 保证函数只能对引用变量进行读取操作,而不能进行写入操作。使用 const 引用的 Intersects 函数的声明如下:
1bool Intersects(const Circle& a, const Circle& b);
还可以把成员函数标记为 const 成员函数,以保证成员函数不会 ...