initial implementation

development
Thomas Lindner 2023-12-28 01:34:23 +01:00
commit ca67bb8ed2
5 changed files with 130 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

85
Cargo.lock generated Normal file
View File

@ -0,0 +1,85 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "crc32fast"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
"cfg-if",
]
[[package]]
name = "fdeflate"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd"
dependencies = [
"simd-adler32",
]
[[package]]
name = "flate2"
version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "miniz_oxide"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
dependencies = [
"adler",
"simd-adler32",
]
[[package]]
name = "pixlers"
version = "0.1.0"
dependencies = [
"png",
]
[[package]]
name = "png"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
dependencies = [
"bitflags",
"crc32fast",
"fdeflate",
"flate2",
"miniz_oxide",
]
[[package]]
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"

7
Cargo.toml Normal file
View File

@ -0,0 +1,7 @@
[package]
name = "pixlers"
version = "0.1.0"
edition = "2021"
[dependencies]
png = "0.17"

BIN
nopslide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

37
src/main.rs Normal file
View File

@ -0,0 +1,37 @@
use png::{ColorType, Decoder};
use std::error::Error;
use std::fs::File;
use std::io::{BufWriter, Write};
use std::net::TcpStream;
fn main() -> Result<(), Box<dyn Error>> {
let decoder = Decoder::new(File::open("nopslide.png")?);
let mut reader = decoder.read_info()?;
let mut buf = vec![0; reader.output_buffer_size()];
let info = reader.next_frame(&mut buf)?;
let mut stream = BufWriter::new(TcpStream::connect("151.217.15.79:1337")?);
loop {
for x in 0..info.width {
for y in 0..info.height {
match info.color_type {
ColorType::GrayscaleAlpha => {
let offset = ((x + y * info.width) * 2) as usize;
if buf[offset + 1] != 0 {
write!(
stream,
"PX {} {} {:02x}{:02x}{:02x}\n",
x + 1920 - info.width,
y + 900 - info.height,
buf[offset],
buf[offset],
buf[offset]
)?;
}
}
_ => todo!("Unsupported color type"),
}
}
}
}
}