Appearance
句法分析
Entanclature 的句法由三部分组成:Hash 信息、Meta 信息、校验信息。其中 Hash 部分和检验部分的长度是固定的,只有 Meta 部分的长度是未知的,因此部分间不需要分隔符也可以区分。
Hash 信息
第一部分是原始图片 (一般是兼容性强的格式) 的 Hash (SHA-1) 值的前 7 位。所有相关图片的第一部分是相同的。因此,他可以用来表明图片间的关系;并且还可以在作用域内保证命名的唯一性 (主要功能)。另一个用隐藏好处是:保证按文件名排序时,相关图片会被放在一起。
虽然 SHA-1 对大小写不敏感,但这里的 Hash 部分强制使用大写字母,以追求最短的 Base64 字符串长度。
Meta 信息
Meta 部分是 Entanclature 的核心。
Meta 信息由数组相互独立的类型标识符 + 图片质量信息标识组成;
每组子 Meta 信息对应一个单独的图片,第一组子 Meta 信息表示的是当前文件的 Meta 信息。为了保证生成文件名的唯一性,除第一组子 Meta 信息外,其余的子 Meta 信息按字母表正序排列。
以下是部分类型标识符和具体文件格式的对照信息:
类型标识符 | 缩写 | 文件格式 | MIME 类型 | 文件拓展名 |
---|---|---|---|---|
A | AVIF | AV1 图像文件格式 | image/avif | .avif |
J | JPEG | 联合影像专家小组图像 | image/jpeg | .jpeg /.jpg |
P | PNG | 便携式网络图像 | image/png | .png |
W | WebP | 万维网图像格式 | image/webp | .webp |
... | ... | ... | ... | ... |
完整列表可以在这里获取。
以下是图片质量标识以及其具体含义:
图片质量标识符 | 对图片质量标识符的解释 |
---|---|
∅ (empty) | 默认的图片质量 / 目标格式推荐的压缩质量 |
0 - 100 | 0% - 100%,数字越大,文件大小越大 (甚至可能会比原图更大) |
+ | 无损压缩 (可能会比原图更大),等同于 100 |
- | 在不较大影响显示效果的情况下,尽可能的降低文件大小 |
校验位
我们采用与第二代居民身份证校验码的同款算法进行校验;即 ISO 7064:1983.MOD 11-2。
具体方法是将 Hash 信息和 Meta 信息的为一位字符在 ASCII 码上的值 (x
) 乘以其各自的系数 (2^(n-i)%11
, n
= 字符串的长度, i
= 字符在字符串中的位数) 之和再余上 11:
然后得到的结果 (f(x)
) 就是校验码。计算的结果将始终在 0
- 10
的范围间,如果 f(x) = 10
,则使用罗马数字 X 表示。
将校验码赋于字符串的末尾,再对整个字符串进行 Base64 编码,就得到最终的文件名了!