4 个版本
0.2.1 | 2022年8月5日 |
---|---|
0.2.0 | 2022年8月5日 |
0.1.1 | 2019年5月13日 |
0.1.0 | 2019年5月13日 |
#393 in 多媒体
19KB
291 行
Robot36-encoder
这是一个使用Robot 36编码将图像转换为音频样本的简单编码器。它基于Ahmet的C实现。您可以使用他的解码器来解码此图像。
它作为库使用,因此您可以在Rust项目中使用它。您将Robot36Image编码为一个迭代器,其中包含代表每个音频样本的i16。然后您可以使用此样本写入音频文件或直接写入音频输出。有一个可选功能 image
,可以启用以将DynamicImage 转换为Robot36Image。
请注意,在下一个版本中可能会发生破坏性变化!
使用Hound的示例
use robot36_encoder::{Encoder, Robot36Image};
use std::env;
/** Simple exmaple.
* encode-image /path/to/image-input.png /path/to/audio-output.wav
*/
fn main() {
let args: Vec<String> = env::args().collect();
let image = image::open(args[1].to_string()).unwrap();
let encoder = Encoder::new(
Robot36Image::from_image(image.resize(320, 240, image::imageops::FilterType::Lanczos3))
.unwrap(),
48000,
);
let samples = encoder.encode();
let spec = hound::WavSpec {
channels: 1,
sample_rate: 48000,
bits_per_sample: 16,
sample_format: hound::SampleFormat::Int,
};
let mut writer = hound::WavWriter::create(args[2].to_string(), spec).unwrap();
for sample in samples {
writer.write_sample(sample).unwrap();
}
}
依赖项
~0.5–4MB
~34K SLoC