7个版本
0.3.1 | 2023年4月19日 |
---|---|
0.3.0 | 2023年4月13日 |
0.2.0 | 2022年11月2日 |
0.1.3 | 2022年9月13日 |
0.1.1 | 2022年6月8日 |
#200 in 图像
每月 34 次下载
130KB
2.5K SLoC
PNGlitcher
这个crate包含一个库,允许您损坏PNG图像。大部分代码来自为神奇的PNG编码器(用于Image crate)。这里的想法是提供一个类似Ruby gem PNGlitch的工具,用于Rust。图像的输出将不会与PNGlitch完全相同,它只是用于启发。
目前这个cargo处于重度的WIP状态,任何版本都可能引入破坏性变更,所以请使用这个crate来娱乐并创建看起来奇怪的PNG图像。
如何使用
复制
单个过滤器
对于每个出现,这个算法将从图像的另一部分复制数据,然后强制png使用指定的过滤器。
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- filter(u8): 从0到5,定义保存图像时使用的过滤器。
- occurence(usize): glitch的出现次数,1表示图像的每一列。
- gap(usize): 从第一次出现之前跳过的列数
示例
pnglitcher::duplicate("input1.png", "output1", true, 3, 1, 0);
pnglitcher::duplicate("input2.png", "output2", true, 0, 100, 1000);
示例
使用复制算法为给定图像的所有过滤器创建示例
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- occurence(usize): glitch的出现次数,1表示图像的每一列。
- gap(usize): 从第一次出现之前跳过的列数
示例
pnglitcher::duplicate_sample("input1.png", "output1", true, 1, 0);
pnglitcher::duplicate_sample("input2.png", "output2", true, 100, 1000);
替换
单个过滤器
对于每个出现,这个算法将用0替换数据,然后强制png使用指定的过滤器。
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- filter(u8): 从0到5,定义保存图像时使用的过滤器。
- occurence(usize): glitch的出现次数,1表示图像的每一列。
示例
pnglitcher::replace("input1.png", "output1", true, 0, 1);
pnglitcher::replace("input2.png", "output2", true, 4, 1);
示例
使用复制算法为给定图像的所有过滤器创建示例
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- occurence(usize): glitch的出现次数,1表示图像的每一列。
示例
pnglitcher::replace_sample("input1.png", "output1", true, 1);
pnglitcher::replace_sample("input2.png", "output2", true, 10);
变量过滤器
使用不同的png过滤器保存每一行。
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- random(boolean): 定义选择过滤器的选择是随机还是顺序的。
示例
pnglitcher::variable_filter("input1.png", "output1", true, true);
pnglitcher::variable_filter("input2.png", "output2", true, false);
错误的过滤器
单个过滤器
强制png编码器使用错误的过滤器
参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
- filter(u8): 从0到5,定义保存图像时使用的过滤器。
示例
pnglitcher::wrong_filter("input1.png", "output1", true, 0);
pnglitcher::wrong_filter("input2.png", "output2", true, 2);
示例
使用错误的过滤器算法为给定图像的所有过滤器创建示例参数
- input(str): 输入png图像的路径。
- output(str): 输出png图像的路径(不带扩展名)。
- overwrite: 指定输出文件是否应该覆盖具有相同名称的任何现有图像
示例
pnglitcher::wrong_filter_sample("input1.png", "output1", true);
pnglitcher::wrong_filter_sample("input2.png", "output2", true);
依赖项
~13MB
~70K SLoC