第一部分 导论 2
第1章 计算机科学与媒体计算导论 2
1.1计算机科学是关于什么的 2
1.2编程语言 4
1.3计算机理解什么 5
1.4媒体计算:为什么要把媒体数字化 7
1.5大众的计算机科学 8
1.5.1计算机科学与交流有关 8
1.5.2计算机科学与过程有关 9
习题 9
第2章 编程导论 11
2.1编程与命名有关 11
2.2 Python编程 13
2.3 JES编程 13
2.4 JES媒体计算 15
2.4.1显示图片 18
2.4.2播放声音 19
2.4.3数值命名 20
2.5构建程序 22
习题 27
第3章 使用循环修改图片 30
3.1图片的编码 30
3.2处理图片 35
3.3改变颜色值 40
3.3.1在图片上运用循环 40
3.3.2增/减红(绿、蓝) 42
3.3.3测试程序:它真的能运行吗 45
3.3.4一次修改一种颜色 46
3.4制作日落效果 47
3.5亮化和暗化 51
3.6制作底片 52
3.7转换到灰度 53
习题 55
第4章 修改区域中的像素 58
4.1复制像素 58
4.2图片镜像 60
4.3复制和转换图片 66
4.3.1复制 66
4.3.2制作拼贴图 72
4.3.3通用复制 74
4.3.4旋转 75
4.3.5缩放 77
习题 81
第5章 高级图片技术 84
5.1颜色替换:消除红眼、深褐色调和色调分离 84
5.1.1消除红眼 86
5.1.2深褐色调和色调分离:使用条件式选择颜色 88
5.2合并像素:图片模糊化 92
5.3比较像素:边缘检测 93
5.4图片融合 94
5.5背景消减 96
5.6色键 98
5.7在图像上绘图 101
5.7.1使用绘图命令 102
5.7.2向量和位图表示 104
5.8指定绘图过程的程序 105
习题 107
第二部分 声音 110
第6章 使用循环修改声音 110
6.1声音是如何编码的 110
6.1.1声音的物理学 110
6.1.2探索声音的样子 113
6.1.3声音编码 115
6.1.4二进制数和二进制补码 116
6.1.5存储数字化的声音 117
6.2处理声音 118
6.2.1打开声音并处理样本数据 118
6.2.2使用JES媒体工具 121
6.2.3循环 123
6.3改变音量 123
6.3.1增大音量 123
6.3.2真的行吗 124
6.3.3减小音量 127
6.3.4理解声音函数 128
6.4声音规格化 128
习题 131
第7章 修改一段样本区域 133
7.1用不同方法处理不同声音片段 133
7.2剪接声音 135
7.3通用剪辑和复制 140
7.4声音倒置 142
7.5镜像 143
习题 144
第8章 通过合并片段制作声音 146
8.1用加法组合声音 146
8.2混合声音 147
8.3制造回声 148
8.3.1制造多重回声 149
8.3.2制作和弦 149
8.4采样键盘工作原理 150
8.5加法合成 153
8.5.1制作正弦波 153
8.5.2把正弦波叠加起来 155
8.5.3检查结果 156
8.5.4方波 157
8.5.5三角波 158
8.6现代音乐合成 160
8.6.1 MP3 161
8.6.2 MIDI 161
习题 162
第9章 构建更大的程序 164
9.1自顶向下设计程序 164
9.1.1自顶向下设计示例 165
9.1.2设计顶层函数 166
9.1.3编写子函数 168
9.2自底向上设计程序 171
9.3测试程序 172
9.4调试技巧 174
9.4.1找出担心的语句 174
9.4.2查看变量 175
9.4.3调试冒险游戏 176
9.5算法和设计 179
9.6在JES之外运行程序 180
习题 181
第三部分 文本、文件、网络、数据库和单媒体 186
第10章 创建和修改文本 186
10.1文本作为单媒体 186
10.2字符串:构造和处理字符串 187
10.3处理部分字符串 189
10.3.1字符串方法:对象和点号语法简介 190
10.3.2列表:强大的结构化文本 191
10.3.3字符串没有字体 194
10.4文件:存放字符串和其他数据的地方 194
10.4.1打开文件和操作文件 195
10.4.2制作套用信函 197
10.4.3编写程序 197
10.5 Python标准库 201
10.5.1再谈导入和私有模块 202
10.5.2另一个有趣模块:Random 202
10.5.3 Python标准库的例子 204
习题 205
第11章 高级文本技术:Web和信息 208
11.1网络:从Web获取文本 208
11.2通过文本转换不同媒体 211
11.3在图片中隐藏信息 216
习题 219
第12章 产生Web文本 221
12.1 HTML : Web的表示方法 221
12.2编写程序产生HTML 225
12.3数据库:存放文本的地方 229
12.3.1关系型数据库 231
12.3.2基于散列表的关系型数据库示例 231
12.3.3使用SQL 234
12.3.4使用数据库构建Web页面 236
习题 237
第四部分电影 240
第13章 制作和修改电影 240
13.1产生动画 241
13.2使用视频源 247
13.3自底向上制作视频效果 250
习题 254
第五部分 计算机科学议题 258
第14章 速度 258
14.1关注计算机科学 258
14.2什么使程序速度更快 258
14.2.1什么是计算机真正理解的 258
14.2.2编译器和解释器 259
14.2.3什么限制了计算机的速度 263
14.2.4让查找更快 265
14.2.5永不终止和无法编写出的算法 266
14.2.6为什么Photoshop比JES更快 268
14.3什么使计算机速度更快 268
14.3.1时钟频率和实际的计算 268
14.3.2存储:什么使计算机速度慢 269
14.3.3显示 270
习题 270
第15章 函数式编程 272
15.1使用函数简化编程 272
15.2使用Map和Reduce进行函数式编程 275
15.3针对媒体的函数式编程 277
15.4递归:一种强大的思想 279
15.4.1递归式目录遍历 284
15.4.2递归式媒体函数 286
习题 287
第16章 面向对象编程 289
16.1对象的历史 289
16.2使用“小海龟” 290
16.2.1类和对象 290
16.2.2创建对象 290
16.2.3向对象发送消息 291
16.2.4对象控制自己的状态 292
16.2.5小海龟的其他函数 293
16.3教小海龟新的技艺 295
16.4面向对象的幻灯片 297
16.4.1 Joe the Box 300
16.4.2面向对象的媒体 302
16.4.3为什么使用对象 306
习题 307
附录A Python快速参考 309
参考文献 313