From a369b9d9fec0fb70867d1653744cc70d58633fed Mon Sep 17 00:00:00 2001 From: bonbon Date: Wed, 15 Oct 2025 16:11:24 +0200 Subject: [PATCH] changed to binary format --- Cargo.toml | 2 +- src/main.rs | 25 ++++++++++++++++++------- testi.np2 | Bin 0 -> 76808 bytes testpic.png | Bin 0 -> 462 bytes 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 testi.np2 diff --git a/Cargo.toml b/Cargo.toml index d011f38..f802800 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -image = "0.23.14" \ No newline at end of file +image = "0.25.8" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 7384df9..9f55a40 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,37 @@ use image::{GenericImageView, Pixel}; use std::fs::File; -use std::io::Write; +use std::io::{BufWriter, Write}; use std::env; fn main() -> std::io::Result<()> { let args: Vec = env::args().collect(); + if args.len() != 3 { + eprintln!("Usage: {} ", args[0]); + std::process::exit(1); + } + let path = &args[1]; let out_path = &args[2]; + let img = image::open(path).map_err(|e| { std::io::Error::new(std::io::ErrorKind::Other, e.to_string()) })?; + let (width, height) = img.dimensions(); - let mut file = File::create(out_path)?; + + let file = File::create(out_path)?; + let mut writer = BufWriter::new(file); + + writer.write_all(&width.to_le_bytes())?; + writer.write_all(&height.to_le_bytes())?; + for y in 0..height { for x in 0..width { - let pixel = img.get_pixel(x, y); - let (r, g, b, _) = pixel.channels4(); - write!(file, "{}s{}s{}p", r, g, b)?; + let px = img.get_pixel(x, y).to_rgb(); + writer.write_all(&px.0)?; } - file.write_all(b"\n")?; } + writer.flush()?; Ok(()) } - diff --git a/testi.np2 b/testi.np2 new file mode 100644 index 0000000000000000000000000000000000000000..253a6f1c7b0a1a08e2e7007000dd718e7d13263d GIT binary patch literal 76808 zcmeI4F|Hj&5Jmq|5E}qnNXYUMNQj&eB7F%0Z^a1-ko*O(1`<|5NZ^z$z(^!lD)n){ zsjfHuiffIfQs3^Hs(Ys9>pj{3<>~3^<@mejpAYZeZg@Svc?H*=PVQONhH#IP0PZ2} z>ExbOneU!lR#j!btDM|3kNNJ&WmQ$?yUNKu^O*0RTvk}j~iLC(yo`I@gf&^zW?$f%y*9iE&FK|X7~<~w=@ z_{m|_KY#VPVy`mlh~3P3=Dy}@zUn~lI5R1Hc4kgTdpI+zo?m@p*{h5?VmGs%xv%-I z;`{k$U%|y3;ou?hS*CBk=Bp0$j(HYX&CFotELY|E)hCv{Vl~4kbC#}{OS|SUa^{ClsU^)nXmb(1HEIO1y(aNm^sT;d4BbYWv^JxFv^_es?1mU za?DO<7-i1>`SJ{x`7%>g%~##%7n^TCrrMGDsvG@c^X zi_NzmQ|-un)s22J|2wFwRQU4hkeCA3oXO1h-BV>Zu2M4;xaLgeJqdDE?8a4Uh62}| z$;?jfsj?easTm4fb0+hi1i319<0>^nfoslWW+(Sl*^R5z3jv!|?-wabdt2ATG6zWv-RYsXOGS!tjf}GiWGfefY(u^@v zs8h{X8D-+gR9ETAh}AfGkgI%@NonNdbH-+2mkJ2M3Ntohbao6pRQ zGOGE`Q>fdSA;@RVw~pF;W@eO8&3B$c-Oda_K5M>p)HE}EoIfP~M9&0St>eobWmI-U zUEL?W5U%y-_6bN*MK z()wd;zUm3PQBCSxeyu;o+!4QlS@rw*9IsnXMW(u9zVmL}>im87YyB}cU-g9DxDT&e z@1pg`m^W5U{%?G_-*XOMdrE1>nET}kWp&T_<$kXvb?)wwsjhIp zOpsOcJ;&?TQ%W<&=Bp0e>g^8uBU4?`?qbXn%Btu0KJ=Alj3ZNBVS=ohulbIi0e*7g zQ#!w*Pj8IxLuBn;xcAtjuCULnj@Zqtb7t;{RqZauYn{JOwoJe5GpjQkM|(Ikcf@LB zsw?*)vi2^Se%WVMN9<}s?v<{TIcVREz>Xi%<2rs(H_psYUY2B-iOHAyO^&M zU+e7-+055`<4>ahR`^ZG>ge4&v(A}WRhlv0VdB=-;Q3X`YrWkeoB5ir-_JWt;<*|; zzn)*u@44C8;gsjM_x$qj3gh2c&YwhBo%tLz+QXSyRhlv0VdB=-V7^Lut+zX5Ghg!^ zy`}k0$m;0bJG0K2Syh@b-eKa_*5LV7%4@ydA)EP{uiwu*Oyap3Jine_&+oa}+2NGu zxA*+=Gsd4aGV09dpwXVpeU)a6*^Pc`#z{UqVmGtSnOTiYb)_Fc?ufn0s52Z#douS` znlWZK`l%Tw`Rs_@%sOXgH8RzeegwHA_9~;!a2)N)+*fJFnBC~7W}M`+BX%?EoSD_g zR9E^D@j5@<{v?p_4r5R&(qo0~_lFyFV&8%}~RwGkg=|_+|Vy`ml49C%)%zc$+ zjMPElVeETugj?7ox=of!@_xAMl z{N@#0r_&w>A?+dcqfpmT9fi8gb#C;_Tt}fUb3Y1o9o12&%UtJ1zsz+M>N5AEP}fl% zg}TgjZuHAsN1-lrKMHjn)lsO+T<1o=%yks%GWVlU*HImXy3BQM^vhgFp)PYj3UwXT zQK-vY=SIKGbrk9{_oGnPQ5}W4%yn+`%UnmHE^|K$bsg1FsLNdEM!(E;6zVefqfpmT e9fi8gb#C;_Tt}fUb3Y1o9o12&%UtJ1CiA~rEPQ(a literal 0 HcmV?d00001 diff --git a/testpic.png b/testpic.png index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..764f251fdf7fc32bcc83538b725d51a8d426a41f 100644 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoGuTf7>k44ofy`glX(f`Bn0?`xB_V< z1rt{dn>0(q{xIwNg=#k!q`f;l>-Q(KnNI_<_8FK@$@9+C5As$qvaz(cFEL1Hiq3nO zJo|tA*(axO|M~y_|LnEfTk6^~v$7(?g36q_))*Px3{SpZy{mt^S69Bl@8mt_fp#dA z1o;Is09E4ylV+_g1FHSt>EaktG3V_aN4_Ql0f&oHy)1=`quZ_VK10D>LP4^&sJc_XO+0ttR|x%ap?fWgv| zv!MxQs?n?R literal 0 HcmV?d00001