简介:这份PPT课件系统梳理烫发的基本理论,面向美发专业学员、发型师及门店培训教学使用,帮助学习者从化学与物理两个层面理解烫发过程,解决发质判断、软化控制与加热操作等实操难点。整份资源共1个pptx文件,压缩包约159KB,以图文排版的幻灯片形式逐页呈现,便于课堂讲解与自学翻阅。内容涵盖烫发水一剂还原剂与二剂定型剂的作用机理,阿摩尼亚、乙硫醇酸、溴化钠、过氧化氢等成分分工,冷烫与热烫的原理差异,陶瓷烫、数码烫、基因烫及低温烫的特点与适用发质,并给出按色度划分的八类发质分析、不同发质对应的软化程度区间、视觉触觉缠绕三种软化测试方法,以及软化时间控制与间歇性加热的操作参考,页末还配有加热方式对照示意图。目前已有84人学习,适合作为烫发入门到进阶的理论铺垫资料。
1. 烫发基本理论PPT学习教案为什么该用脚本生成
一家做了十二年的美发培训学校,课件更新频率常比课程大纲还高:药水从单剂换成双剂,卷杠从序号换成直径标号,模特案例每期一换。那份「烫发基本理论PPT学习教案.pptx」有 90 页,真正会动的不到 30 页,每次改却要从头翻到尾。二硫键那两页的分子式截图是五年前截的,讲师想补一条反应式只能重画。问题不在内容,在于课件被当成文件而不是数据。
把烫发理论拆成结构化数据再渲染成 PPT,改参数就是改一行配置。适合给连锁门店做统一课件的培训主管、要把课程包交付给加盟商的内容负责人,以及想给技术分享做自动排版的工程师。下面从烫发参数体系讲到母版写入、页数压缩和交付前校验。
2. 烫发基本理论的参数骨架:从二硫键到卷杠直径
课件里最容易讲糊的是「为什么这款药水配这个卷杠、留这么久」。参数之间其实是连着的:发质决定渗透速度,pH 和浓度决定断键速度,卷杠直径决定断键后的形态,双氧水浓度决定这个形态能不能锁住。把这四组参数写成一张表,课件的骨架就立起来了,也才有后面用代码渲染的可能。
2.1 毛发三层结构里,烫发真正作用的是哪一层
角质层是 6 到 10 层重叠的毛鳞片,决定药水「多久能钻进去」,不参与形变。皮质层占整根头发重量的 80% 到 90%,胱氨酸二硫键大量分布在这里,是唯一发生还原与氧化反应的场所。髓质层在细软发里常常断续甚至缺失,对烫发结果几乎没有影响,但很多老课件花两页讲它,讲到学员以为髓质层决定卷度。
判断一款药水能不能用,看的是它能不能在合理时间内把皮质层的二硫键打开到六成以上,而不是把毛鳞片泡开到透明。鳞片张得越狠,皮质层里的水分和蛋白质流失越快,烫完看着卷、摸着一把稻草,就是这个原因。
- 健康完整鳞片:需要碱剂先让鳞片张开,pH 越高渗透越快
- 轻微受损:鳞片边缘翘起,渗透快,浓度要下调一档
- 重度受损:鳞片大面积缺失,软化几分钟就到位,稍不留神就过烫
2.2 还原与定型两步反应的化学账
第一步还原,巯基乙酸或巯基乙酸铵在碱性条件下(pH 8.5 到 9.5)攻击胱氨酸的二硫键,把它拆成两个带巯基的半胱氨酸残基。这一步业内叫软化,本质是把头发内部的「弹簧」剪断,头发进入可塑状态。
第二步是物理形变,把头发按目标方向绕在卷杠上。这一步没有化学反应,但张力决定最终卷度,张力不均匀就会出现同一头顶有的卷有的直。
第三步氧化,过氧化氢在酸性条件(pH 3.0 到 4.0)下把相邻的两个巯基重新氧化成二硫键。新键的位置由卷杠决定,所以卷度被锁在了新的形态上。
| 步骤 | 主要试剂 | 有效浓度 | pH | 典型停留时间 |
|---|---|---|---|---|
| 软化(还原) | 巯基乙酸铵 | 6% - 9% | 8.5 - 9.5 | 8 - 20 min |
| 渗透辅助 | 氨水 / 单乙醇胺 | 1% - 2% | 与上同步 | 与软化同步 |
| 定型(氧化) | 过氧化氢 | 1.5% - 3% | 3.0 - 4.0 | 5 - 10 min |
| 中和冲洗 | 温水 + 酸性洗发水 | — | 4.5 - 5.5 | 3 - 5 min |
注意:定型剂浓度不是越高越好。超过 3% 的过氧化氢在漂过的头发上会同时破坏皮质层的肽链,卷度当场看着没问题,两周后开始塌。
2.3 卷杠直径、发片厚度与卷度的换算
课件上写「大卷用大杠」等于没写。学员需要的是能对上的数字:成卷直径大约是卷杠直径的 1.2 到 1.4 倍,倍率受发片厚度和张力影响。发片厚度超过卷杠直径的一半,内层头发就软化不透,拆杠后外层卷、内层直。
| 卷杠直径 | 成卷直径估算 | 目标卷度 | 发片厚度上限 | 上杠角度 |
|---|---|---|---|---|
| 12 mm | 15 - 18 mm | 羊毛卷、紧密螺旋 | 1.0 cm | 90° |
| 20 mm | 25 - 28 mm | 中小卷 | 1.5 cm | 90° |
| 28 mm | 34 - 38 mm | 中卷、纹理感 | 2.0 cm | 45° - 90° |
| 35 mm | 42 - 48 mm | 大波浪 | 2.5 cm | 45° |
发片宽度建议控制在卷杠长度的 1.5 倍以内,太宽两端会翘出来,卷出来是喇叭形。
2.4 发质判断到药水浓度与停留时间的对应
这张表是整份课件的核心页,也是后面代码要渲染的主要数据源。
| 发质 | 鳞片状态 | 建议浓度 | 基准停留 | 环境修正 |
|---|---|---|---|---|
| 细软发 | 完整 | 6% - 7% | 12 min | 低于 20℃ 加 20% |
| 正常发 | 完整 | 8% | 15 min | 低于 20℃ 加 15% |
| 粗硬发 | 完整厚实 | 9% | 20 min | 低于 20℃ 加 15% |
| 受损发 | 部分缺失 | 5% - 6% | 6 - 8 min | 不做加法,只做减法 |
| 漂染发 | 大面积缺失 | 4% - 5% | 3 - 5 min | 需先做发束测试 |
下面这段代码可以直接生成课件里的「停留时间速查」页文案,也方便讲师在课堂上按教室温度现算。
# 按发质与 pH 估算软化停留时间,单位:分钟 BASE = { # 25℃ 下的基准停留时间 "fine": 12, # 细软发 "normal": 15, # 正常发 "coarse": 20, # 粗硬发 "damaged": 6, # 受损发 } PH_FACTOR = {8.5: 1.25, 9.0: 1.0, 9.5: 0.85} # pH 越高,断键越快 def dwell_time(hair: str, ph: float, room_c: float = 25.0) -> float: t = BASE[hair] * PH_FACTOR[ph] # 每偏离 25℃ 五度,按 10% 修正;低温环境反应明显变慢 t *= 1 + (25.0 - room_c) / 5.0 * 0.10 return round(t, 1) print(dwell_time("coarse", 9.5, 20)) # 粗硬发 + 低温教室 print(dwell_time("damaged", 8.5, 25)) # 受损发 + 低 pH,尽量缩短BASE 用的是课堂经验基准值,PH_FACTOR 只列了三档常见 pH,门店实际用的药水如果在 8.8 这种中间值,把字典改成按区间插值即可。room_c 这一项在北方冬季教室和南方夏季门店的差距能到三成,把它写进课件比口头说一句「看情况」有用得多。发束测试永远优先于任何计算值,代码给出的只是起点。
3. 用 python-pptx 把讲义数据写成烫发基本理论PPT
理论参数整理好之后,剩下的活是把它变成能放映的文件。python-pptx 不依赖 Office,能在 CI 里跑,改一版参数重新出片只要几十秒,这是它比「手工改 + 另存为」强的地方。
3.1 环境准备与母版页编号约定
python -m venv .venv && source .venv/bin/activate pip install python-pptx pillow先做一份 template.pptx:把封面、章节分隔、图文两栏、表格页、纯文字页五种版式建好,占位符改名成title/body/note,中文字体在母版里统一设成思源黑体或微软雅黑。代码里按索引取版式,不要按名字匹配——中文版 PowerPoint 的版式名会随语言包变化。
from pptx import Presentation prs = Presentation("template.pptx") for i, layout in enumerate(prs.slide_layouts): # 打印版式索引、名称、占位符名称,确认约定无误 print(i, layout.name, [p.name for p in layout.placeholders])跑一次把结果抄进常量表,之后所有渲染都引用这份常量,版式调整时只需要改一处。
3.2 把讲义数据结构化成 YAML 再灌进占位符
把第二章那几张表写成 YAML,一页对应一个条目,正文用短句数组。
- layout: 5 title: 还原与定型的两步反应 body: - "还原:巯基乙酸在 pH 8.5-9.5 下断开二硫键" - "塑形:卷杠张力决定最终卷度" - "定型:过氧化氢在 pH 3.0-4.0 下重建二硫键" note: "强调定型剂浓度不超过 3%"import yaml from pptx import Presentation from pptx.util import Pt def render(prs, page): slide = prs.slides.add_slide(prs.slide_layouts[page["layout"]]) for ph in slide.placeholders: if ph.name == "title" and page.get("title"): ph.text_frame.text = page["title"] ph.text_frame.paragraphs[0].runs[0].font.size = Pt(34) elif ph.name == "body" and page.get("body"): tf = ph.text_frame tf.text = page["body"][0] # 第一条写入已有段落 for line in page["body"][1:]: p = tf.add_paragraph() # 后续条目新增段落 p.text = line p.font.size = Pt(22) elif ph.name == "note" and page.get("note"): slide.notes_slide.notes_text_frame.text = page["note"] return slide prs = Presentation("template.pptx") for page in yaml.safe_load(open("perm_theory.yaml", encoding="utf-8")): render(prs, page) prs.save("烫发基本理论PPT学习教案.pptx")body的第一条必须先写进text_frame.text,否则后面的段落会顶在空占位符上多出一行。notes_slide是备注页,直接用notes_text_frame.text赋值,讲师在放映模式下看得到、学员拿到的 PDF 里看不到。
3.3 卷杠示意图与对比图的等比插入
用手写坐标插图,换一张素材就会拉伸变形。按图片真实像素算比例再落到厘米单位上,才能保证五张图横排对齐。
from PIL import Image from pptx.util import Cm def add_pic(slide, path, left_cm, top_cm, max_w_cm, max_h_cm): w, h = Image.open(path).size ratio = min(max_w_cm / w, max_h_cm / h) # 取较小的缩放比,避免溢出框 slide.shapes.add_picture( path, Cm(left_cm), Cm(top_cm), Cm(w * ratio), Cm(h * ratio) )五个卷杠对比图按 3.2 cm 间距横排,max_w_cm设 3.0、max_h_cm设 4.5,插完再统一加一句「同一发片、同一张力」的注释,学员才知道这是对照实验。
3.4 字号、行距与溢出的三个防守参数
python-pptx 不会自动缩排,文本溢出只能靠生成前拦截。下面这组值是 16:9 投影、8 米教室实测下来比较稳的配置。
| 元素 | 字号 | 行距 | 单页上限 |
|---|---|---|---|
| 页标题 | 32 - 36 pt | 1.0 | 18 字 |
| 正文要点 | 20 - 24 pt | 1.3 | 6 行 |
| 表格文字 | 16 - 18 pt | 1.15 | 6 列 |
| 图注 | 14 - 16 pt | 1.0 | 1 行 |
def warn_overflow(prs, max_title=18): for i, slide in enumerate(prs.slides, 1): for ph in slide.placeholders: txt = ph.text_frame.text.strip() if ph.name == "title" and len(txt) > max_title: print(f"第 {i} 页标题过长({len(txt)} 字):{txt}")生成后跑一遍warn_overflow,把所有超长标题打出来手动改短。这比打开 PowerPoint 一页页翻快得多。
4. 烫发理论课件的页数预算与教学节奏压缩
90 页的课件念不完,也不该念完。理论课 90 分钟,按每页 90 秒算,能讲透的上限在 55 页左右,中间还要留出提问和发束演示的时间。压缩不是删内容,是把「一页讲三件事」改成「三页各讲一件事」。
4.1 45 页怎么分:按模块做页数预算
| 模块 | 页数 | 每页承载 |
|---|---|---|
| 封面 + 课程目标 | 2 | 学完能独立判断发质与选杠 |
| 毛发结构 | 5 | 一层结构一页 |
| 化学原理 | 8 | 还原、塑形、定型各 2 页 |
| 药水与参数 | 7 | 浓度、pH、时间各成表 |
| 卷杠与手法 | 9 | 直径、角度、张力分组 |
| 发质判断与排雷 | 6 | 四类发质各一页 + 两页反例 |
| 真人案例 | 6 | 术前、过程、术后对比 |
| 练习与考核 | 2 | 判断题 + 现场发束实操 |
| 合计 | 45 | — |
预算定好之后写进 YAML 的layout字段,超出的页在渲染阶段就能被脚本拦下来。
4.2 化学式用图片还是文本框
结构式(比如胱氨酸的完整骨架)用 300 dpi、透明底的 PNG,从画图工具导出后别再截屏,截屏的锯齿在投影上会很明显。反应式则必须用文本框,因为要参与排版和改字号。
python-pptx 没有直接的上下标接口,需要操作底层 XML 属性:
def set_script(run, text, offset="-25000"): # offset 为千分之一百分比,-25000 表示下标,30000 表示上标 run.text = text run.font._rPr.set("baseline", offset) # 用法:写出 -S-S- 里的下标效果把offset定义成模块级常量,后续批量改字号时才不会把上下标一起抹掉。反应式里的箭头用「→」字符比插入图形省事,字号跟着正文走。
4.3 真人案例页的批量排版与素材处理
案例页用 3×2 网格,六张图统一裁成 4:3、宽度 4.5 cm。素材文件按case_编号_术前/过程/术后.jpg命名,脚本按编号分组成页,一个案例正好一页。
素材脱敏是硬要求:模特正面清晰照需要书面授权,没有授权的用侧后位或局部发束特写替代。脚本层面可以做一层检查,读取文件名里的编号,凡是授权名单里没有的编号直接跳过并打印告警,避免误发到加盟商手里。
def build_case_page(prs, case_id, images, allowed): if case_id not in allowed: print(f"案例 {case_id} 未在授权名单内,跳过") return None slide = prs.slides.add_slide(prs.slide_layouts[5]) for idx, img in enumerate(images[:6]): add_pic(slide, img, 1.0 + (idx % 3) * 5.0, 3.0 + (idx // 3) * 5.0, 4.5, 3.4) return slide4.4 导出 PDF 与讲义分页
讲师用 PPT,学员要 PDF,两份文件必须同源。用 LibreOffice 无头模式导出,不要另存为图片再拼。
soffice --headless --convert-to pdf --outdir dist "烫发基本理论PPT学习教案.pptx"Windows 下把soffice换成完整路径,比如"C:\Program Files\LibreOffice\program\soffice.exe"。导出后翻一遍中文有没有变方框,方框说明目标机器缺字体,把母版字体换成思源黑体这类可嵌入的开源字体再导一次即可。
5. 交付前校验:参数一致性、投屏可读性与放映节奏
课件发出去之前有三件事值得用脚本过一遍,都能在几分钟内发现问题。
5.1 核对课件表格与讲义源数据是否一致
改了 YAML 忘记重新生成,或者手工在 PowerPoint 里动过一页,都会造成课件与讲义对不上。把课件里的表格读回来跟源数据比行数、比首列,就能定位。
def check_table(prs, page_idx, expect_rows): slide = prs.slides[page_idx] for shape in slide.shapes: if shape.has_table: rows = [[c.text.strip() for c in r.cells] for r in shape.table.rows] if len(rows) != len(expect_rows): print(f"第 {page_idx + 1} 页表格行数 {len(rows)},预期 {len(expect_rows)}") return rows print(f"第 {page_idx + 1} 页没有找到表格") return None5.2 投屏字号与对比度的下限检查
字号够不够,取决于最后一排坐多远。教室场景按下面这张表兜底,正文低于下限就在生成阶段报错。
| 观看距离 | 幕布宽度 | 正文最小字号 |
|---|---|---|
| 4 m | 2.0 m | 16 pt |
| 8 m | 3.0 m | 20 pt |
| 12 m | 4.0 m | 24 pt |
对比度方面,浅底深字和深底浅字都行,但正文与背景的亮度差要拉开;灰底配浅灰字在投影仪上基本看不清。表格里的分隔线宽度不低于 0.75 pt,再细就打不出来。
5.3 用备注页字数估算放映节奏
备注页写讲稿,一条经验换算:中文口播每分钟约 220 字,每页留 90 秒左右,备注控制在 120 到 160 字最舒服。写个脚本统计每页备注字数,低于 60 字的页大概率是讲师会即兴发挥、跑偏的地方,高于 300 字的页说明内容太密,应该拆页。
for i, slide in enumerate(prs.slides, 1): if not slide.has_notes_slide: print(f"第 {i} 页缺备注") continue n = len(slide.notes_slide.notes_text_frame.text) if n > 300: print(f"第 {i} 页备注 {n} 字,建议拆页")打包交付时,把template.pptx、perm_theory.yaml、渲染脚本和导出的 PDF 放进同一个课程包,学员拿到的版本和讲师放映的版本才不会出现第二套字体、第二套参数。
本文还有配套的精品资源,点击获取