PNG decoding and encoding library in pure Rust

Overview

PNG Decoder/Encoder

Build Status Documentation Crates.io Lines of Code License fuzzit

PNG decoder/encoder in pure Rust.

It contains all features required to handle the entirety of the PngSuite by Willem van Schack.

pngcheck

The pngcheck utility is a small demonstration binary that checks and prints metadata on every .png image provided via parameter. You can run it (for example on the test directories) with

cargo run --release --example pngcheck ./tests/pngsuite/*

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Comments
  • APNG Encode

    APNG Encode

    As @HeroicKatora suggested, I made a PR directly here, this is supposed to continue the work done on image-png#99.

    As I said over there, this PR takes the existing code and adds APNG encoding functionality, maintaining backwards compatibility, but is not supposed to be merged in it's current state. I'd like to hear suggestion from others on how to make it better.

    APNG related features:

    • [x] encode frames
    • [x] set a separate default image
    • [x] set different frame rate for each frame
    • [x] encode frames that don't fill the frame
    • [x] set the default dispose and blend operation
    • [x] set the dispose and blend operation for each frame
    • [x] set the filter type for each write
    opened by Rimpampa 24
  • Remove the num-iter dependency.

    Remove the num-iter dependency.

    num-iter is used just for range_step iterator. By using std::iter::step_by we can remove a lot of bloat:

    `-- num-iter v0.1.39
        |-- num-integer v0.1.41
        |   `-- num-traits v0.2.8
        |       [build-dependencies]
        |       `-- autocfg v0.1.4
        |   [build-dependencies]
        |   `-- autocfg v0.1.4 (*)
        `-- num-traits v0.2.8 (*)
        [build-dependencies]
        `-- autocfg v0.1.4 (*)
    

    This also decreases the build time: 4.9s vs 6.7s

    opened by RazrFalcon 12
  • png-afl fuzzer is broken

    png-afl fuzzer is broken

    The afl fuzzer target in ./png-afl currently exits with SIGABRT as soon as any decoding errors occurs, causing AFL to think for example "CRC mismatch" is a crashing input file.

    opened by martinlindhe 12
  • Consider switching to libflate for decoding

    Consider switching to libflate for decoding

    inflate crate is only used by png, with no other high-profile users. Everybody else uses either libflate or flate2 crates, since they're much faster and have better compatibility.

    Since version 0.1.25 libflate carries just one trivial unsafe block (I've killed off everything else), so its safety story is as good as inflate. There seems to be no reason not to switch.

    opened by Shnatsel 11
  • Writer needs an .into_inner() function

    Writer needs an .into_inner() function

    I want to write a PNG to memory. I wrote code like this:

        let mut encoder = png::Encoder::new(Cursor::new(Vec::new()), info.width, info.height);
        encoder.set_color(png::ColorType::RGB);
        encoder.set_depth(info.bit_depth);
        let mut writer = encoder.write_header()?;
        writer.write_image_data(&frame)?;
        let cursor = writer.into_inner();
        let bytes = cursor.into_inner();
    

    I can't get the bytes back out without an into_inner() function. The line let cursor = writer.into_inner(); fails to compile because there's no .into_inner() function.

    opened by surferjeff 10
  • Infinite loop in pngcheck on crafted input

    Infinite loop in pngcheck on crafted input

    Multiple files from png-afl/fuzzing_seeds folder throw pngcheck into an infinite loop. Tested on commit 4f2e8eb44586442133c0222e47e1eb762aaef5a5

    Steps to reproduce:

    # build pngcheck with crc32 verification disabled
    RUSTFLAGS='--cfg=fuzzing' cargo build --release --example pngcheck
    # run the test
    for file in png-afl/fuzzing_seeds/id_00*; do timeout --foreground 10 target/release/examples/pngcheck "$file"; if [ $? -eq 124 ]; then echo "timed out: $file"; fi  ; done
    
    

    Non-exhaustive list of inputs triggering the issue:

     png-afl/fuzzing_seeds/id_000004,orig_08448590481e56783c09eb8e1ef74079454eb436
     png-afl/fuzzing_seeds/id_000005,orig_10e3f54adc22168afa151c8af62d7941025284dc
     png-afl/fuzzing_seeds/id_000019,orig_2c13c7b51cd4a954b66841aa011919091d360178
     png-afl/fuzzing_seeds/id_000023,orig_353778e187277b7117906b5148f2c5664f4a09d9
     png-afl/fuzzing_seeds/id_000025,orig_36f641a2772720e205f208ee740ee8e7878417c2
     png-afl/fuzzing_seeds/id_000027,orig_3963b38d1bc68f1d89f879f8c9ecc0be29661db7
     png-afl/fuzzing_seeds/id_000028,orig_3c7923f135d358fd685065fde8a996d474367da2
     png-afl/fuzzing_seeds/id_000033,orig_434b22009b14d79d292bdba36e1c9d469ffd6621
     png-afl/fuzzing_seeds/id_000038,orig_4dd5a93acf101e99daea42f23555e2fd582fe400
     png-afl/fuzzing_seeds/id_000039,orig_4effda12c2611e2e4feb6f0d342feb685ccd825b
     png-afl/fuzzing_seeds/id_000042,orig_552f1c3c93d2fbd66322ac632d76da658451b8f2
     png-afl/fuzzing_seeds/id_000044,orig_5773467dc9fb2cb0d893c9f52ee82304a07c933b
     png-afl/fuzzing_seeds/id_000045,orig_58988106d03edadfd0589819cdbeee5ca4840bbc
     png-afl/fuzzing_seeds/id_000048,orig_5eed0a9941d51b4b81dd37b0ec47e0212f590d0c
     png-afl/fuzzing_seeds/id_000049,orig_643b0a9152e17b59016833e340ba82f9f3e50245
     png-afl/fuzzing_seeds/id_000050,orig_65bb64c0cff335e37189bc8fe3f1cb1fda85efdd
     png-afl/fuzzing_seeds/id_000051,orig_67a1be97015846c4ff4899530d7e20dc9cc82223
     png-afl/fuzzing_seeds/id_000053,orig_6f0adb505881dcbbcc9f9451511367c83a6095ac
     png-afl/fuzzing_seeds/id_000057,orig_730c9b15a39603ec2c470077ec955af0fda43c58
     png-afl/fuzzing_seeds/id_000060,orig_7ecfa97b030ba44e424055345da873bbc447b7b5
     png-afl/fuzzing_seeds/id_000061,orig_7f631f660ee2501b140164af3fa6b88693bbcd66
     png-afl/fuzzing_seeds/id_000062,orig_7faf6fe0bdb2d37f16f0ba3fa8d13c798a07e9d0
     png-afl/fuzzing_seeds/id_000066,orig_8d03e18f2c1873830a99c7e79dc1061aebf7c8df
     png-afl/fuzzing_seeds/id_000067,orig_8e6f4bd0a0ef7668a986a69fa9b2a5946190e66b
     png-afl/fuzzing_seeds/id_000077,orig_9f0c2985bd98c74fe766d18963ee91958ec9b9f2
     png-afl/fuzzing_seeds/id_000078,orig_a1c57f1cc3f92cd18c71ce5ad341cd8702faf51a
     png-afl/fuzzing_seeds/id_000080,orig_a87461573d6dd88155f59195324d2f84c26779c0
     png-afl/fuzzing_seeds/id_000081,orig_af2263242a69a92dd26c11b5237412efd3211258
     png-afl/fuzzing_seeds/id_000083,orig_b6bbfc493d038b97bba6cca4e6e8dff34e871159
     png-afl/fuzzing_seeds/id_000084,orig_bcac6abddfaab667e00dfd35efd54f938442c76a
     png-afl/fuzzing_seeds/id_000086,orig_c8e6bfba8dd71b9d84a201883c12500183adf895
     png-afl/fuzzing_seeds/id_000090,orig_d7e1291f1f2f25ea8e226b53273aa024dc62fc5a
     png-afl/fuzzing_seeds/id_000091,orig_d9b5b22f0332da6efd8ca9b9ee5e6f95d9631ef8
     png-afl/fuzzing_seeds/id_000092,orig_dac9e097f69b15e253d3de0b298e46915ab30a73
     png-afl/fuzzing_seeds/id_000150,src_000001,op_arith8,pos_75,val_-18,+cov
     png-afl/fuzzing_seeds/id_000151,src_000001,op_arith8,pos_75,val_-19,+cov
     png-afl/fuzzing_seeds/id_000152,sync_slave2,src_000143
     png-afl/fuzzing_seeds/id_000161,sync_slave2,src_000122,+cov
     png-afl/fuzzing_seeds/id_000162,src_000001,op_int16,pos_83,val_be_+512,+cov
     png-afl/fuzzing_seeds/id_000182,sync_slave2,src_000159
     png-afl/fuzzing_seeds/id_000184,sync_slave2,src_000184
     png-afl/fuzzing_seeds/id_000201,sync_slave2,src_000178,+cov
     png-afl/fuzzing_seeds/id_000223,sync_slave1,src_000198,+cov
     png-afl/fuzzing_seeds/id_000231,sync_slave1,src_000195
     png-afl/fuzzing_seeds/id_000235,src_000102+000101,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000255,sync_slave1,src_000239
     png-afl/fuzzing_seeds/id_000258,sync_master,src_000128,+cov
     png-afl/fuzzing_seeds/id_000260,sync_slave1,src_000245,+cov
     png-afl/fuzzing_seeds/id_000261,sync_slave2,src_000256,+cov
     png-afl/fuzzing_seeds/id_000263,sync_slave1,src_000253,+cov
     png-afl/fuzzing_seeds/id_000270,src_000127+000120,op_splice,rep_4,+cov
     png-afl/fuzzing_seeds/id_000272,src_000130+000233,op_splice,rep_8
     png-afl/fuzzing_seeds/id_000273,src_000132+000173,op_splice,rep_4,+cov
     png-afl/fuzzing_seeds/id_000283,sync_slave1,src_000237
     png-afl/fuzzing_seeds/id_000290,src_000149,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000303,src_000163,op_havoc,rep_2,+cov
     png-afl/fuzzing_seeds/id_000305,src_000163,op_havoc,rep_4,+cov
     png-afl/fuzzing_seeds/id_000307,sync_slave1,src_000192
     png-afl/fuzzing_seeds/id_000308,src_000163,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000310,src_000169,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000313,sync_slave1,src_000306
     png-afl/fuzzing_seeds/id_000315,sync_slave1,src_000240
     png-afl/fuzzing_seeds/id_000331,sync_slave1,src_000314,+cov
     png-afl/fuzzing_seeds/id_000333,sync_slave1,src_000325,+cov
     png-afl/fuzzing_seeds/id_000341,src_000195+000251,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000351,sync_master,src_000319
     png-afl/fuzzing_seeds/id_000353,src_000251,op_havoc,rep_2,+cov
     png-afl/fuzzing_seeds/id_000356,sync_slave2,src_000355
     png-afl/fuzzing_seeds/id_000357,sync_slave2,src_000350
     png-afl/fuzzing_seeds/id_000358,sync_slave1,src_000342,+cov
     png-afl/fuzzing_seeds/id_000366,sync_slave1,src_000339
     png-afl/fuzzing_seeds/id_000368,sync_slave1,src_000362
     png-afl/fuzzing_seeds/id_000371,sync_slave1,src_000361
     png-afl/fuzzing_seeds/id_000375,sync_slave1,src_000363,+cov
     png-afl/fuzzing_seeds/id_000378,src_000276+000179,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000385,sync_slave1,src_000368
     png-afl/fuzzing_seeds/id_000387,src_000303+000183,op_splice,rep_2,+cov
     png-afl/fuzzing_seeds/id_000391,sync_slave1,src_000380
     png-afl/fuzzing_seeds/id_000392,sync_master,src_000321
     png-afl/fuzzing_seeds/id_000393,src_000328,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000401,sync_slave1,src_000396
     png-afl/fuzzing_seeds/id_000403,sync_slave1,src_000391
     png-afl/fuzzing_seeds/id_000405,sync_slave1,src_000395
     png-afl/fuzzing_seeds/id_000410,sync_slave1,src_000398
     png-afl/fuzzing_seeds/id_000415,sync_slave1,src_000404
     png-afl/fuzzing_seeds/id_000417,src_000404+000402,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000418,src_000407,op_havoc,rep_4,+cov
     png-afl/fuzzing_seeds/id_000444,sync_slave1,src_000430
     png-afl/fuzzing_seeds/id_000462,src_000428,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000473,sync_slave1,src_000447,+cov
     png-afl/fuzzing_seeds/id_000474,sync_slave1,src_000449,+cov
     png-afl/fuzzing_seeds/id_000475,sync_slave1,src_000440
     png-afl/fuzzing_seeds/id_000478,sync_slave1,src_000465
     png-afl/fuzzing_seeds/id_000489,sync_slave1,src_000466
     png-afl/fuzzing_seeds/id_000491,src_000460,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000512,src_000496,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000515,sync_slave2,src_000501
     png-afl/fuzzing_seeds/id_000517,sync_slave2,src_000504
     png-afl/fuzzing_seeds/id_000520,sync_slave1,src_000507
     png-afl/fuzzing_seeds/id_000528,src_000504+000379,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000534,sync_slave1,src_000524
     png-afl/fuzzing_seeds/id_000536,sync_slave1,src_000530,+cov
     png-afl/fuzzing_seeds/id_000538,sync_slave2,src_000537
     png-afl/fuzzing_seeds/id_000539,sync_slave2,src_000530
     png-afl/fuzzing_seeds/id_000540,src_000530,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000540,sync_slave2,src_000538
     png-afl/fuzzing_seeds/id_000541,src_000530,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000542,src_000530,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000544,src_000530,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000544,src_000541,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000548,src_000541,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000555,sync_slave1,src_000533
     png-afl/fuzzing_seeds/id_000555,sync_slave2,src_000545
     png-afl/fuzzing_seeds/id_000556,sync_slave1,src_000532
     png-afl/fuzzing_seeds/id_000558,sync_slave1,src_000551
     png-afl/fuzzing_seeds/id_000559,sync_slave1,src_000531
     png-afl/fuzzing_seeds/id_000560,sync_slave1,src_000543
     png-afl/fuzzing_seeds/id_000562,sync_slave1,src_000557
     png-afl/fuzzing_seeds/id_000573,sync_slave1,src_000568
     png-afl/fuzzing_seeds/id_000575,sync_slave1,src_000570
     png-afl/fuzzing_seeds/id_000576,src_000166+000370,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000577,sync_slave1,src_000571
     png-afl/fuzzing_seeds/id_000578,src_000276+000411,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000579,src_000276+000411,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000581,sync_slave1,src_000572,+cov
     png-afl/fuzzing_seeds/id_000585,src_000049+000256,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000587,src_000580,op_havoc,rep_2,+cov
     png-afl/fuzzing_seeds/id_000587,sync_slave1,src_000582
     png-afl/fuzzing_seeds/id_000588,src_000587,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000589,sync_slave2,src_000589
     png-afl/fuzzing_seeds/id_000590,src_000587,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000591,src_000587,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000591,src_000589,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000592,src_000589,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000592,src_000589,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000595,src_000589+000519,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000597,src_000594+000577,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000598,sync_slave1,src_000590
     png-afl/fuzzing_seeds/id_000599,sync_slave1,src_000585
     png-afl/fuzzing_seeds/id_000600,sync_slave1,src_000583
     png-afl/fuzzing_seeds/id_000602,src_000598,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000614,src_000612+000335,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000615,src_000613,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000618,src_000617+000437,op_splice,rep_2,+cov
     png-afl/fuzzing_seeds/id_000622,src_000275+000521,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000623,src_000276,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000628,src_000169+000605,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000631,sync_slave1,src_000625
     png-afl/fuzzing_seeds/id_000641,src_000573,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000642,src_000573+000396,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000645,src_000641+000238,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000647,sync_slave1,src_000635
     png-afl/fuzzing_seeds/id_000650,sync_slave1,src_000646
     png-afl/fuzzing_seeds/id_000653,sync_slave1,src_000645
     png-afl/fuzzing_seeds/id_000654,src_000643,op_havoc,rep_16,+cov
     png-afl/fuzzing_seeds/id_000656,src_000643,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_000670,src_000649+000303,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000674,sync_slave2,src_000661
     png-afl/fuzzing_seeds/id_000676,sync_slave2,src_000664
     png-afl/fuzzing_seeds/id_000678,sync_slave2,src_000658
     png-afl/fuzzing_seeds/id_000679,sync_slave2,src_000657
     png-afl/fuzzing_seeds/id_000680,sync_slave2,src_000656
     png-afl/fuzzing_seeds/id_000682,sync_slave2,src_000655
     png-afl/fuzzing_seeds/id_000683,sync_slave2,src_000654
     png-afl/fuzzing_seeds/id_000687,src_000665,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000689,src_000657,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_000692,src_000665,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000704,src_000669+000328,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000708,sync_slave1,src_000684,+cov
     png-afl/fuzzing_seeds/id_000711,sync_slave1,src_000697
     png-afl/fuzzing_seeds/id_000721,sync_slave2,src_000693
     png-afl/fuzzing_seeds/id_000725,sync_slave1,src_000667
     png-afl/fuzzing_seeds/id_000728,sync_slave1,src_000663
     png-afl/fuzzing_seeds/id_000738,sync_master,src_000568
     png-afl/fuzzing_seeds/id_000740,sync_slave2,src_000684
     png-afl/fuzzing_seeds/id_000741,sync_slave2,src_000698
     png-afl/fuzzing_seeds/id_000742,sync_slave2,src_000678,+cov
     png-afl/fuzzing_seeds/id_000743,src_000675+000357,op_splice,rep_8
     png-afl/fuzzing_seeds/id_000751,src_000678,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_000755,src_000690,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000761,src_000679+000313,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000766,src_000685+000406,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000768,sync_slave1,src_000754
     png-afl/fuzzing_seeds/id_000770,sync_slave1,src_000762
     png-afl/fuzzing_seeds/id_000772,sync_slave1,src_000767
     png-afl/fuzzing_seeds/id_000775,sync_slave1,src_000714
     png-afl/fuzzing_seeds/id_000777,sync_slave1,src_000749
     png-afl/fuzzing_seeds/id_000781,src_000709,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000781,sync_slave1,src_000719
     png-afl/fuzzing_seeds/id_000785,sync_master,src_000679
     png-afl/fuzzing_seeds/id_000785,sync_slave1,src_000716
     png-afl/fuzzing_seeds/id_000786,sync_master,src_000686
     png-afl/fuzzing_seeds/id_000787,sync_master,src_000676
     png-afl/fuzzing_seeds/id_000788,sync_slave1,src_000766
     png-afl/fuzzing_seeds/id_000789,sync_master,src_000682
     png-afl/fuzzing_seeds/id_000790,sync_slave1,src_000718
     png-afl/fuzzing_seeds/id_000791,sync_master,src_000683
     png-afl/fuzzing_seeds/id_000792,sync_master,src_000680
     png-afl/fuzzing_seeds/id_000793,sync_slave1,src_000753
     png-afl/fuzzing_seeds/id_000794,sync_master,src_000684
     png-afl/fuzzing_seeds/id_000794,sync_slave1,src_000752
     png-afl/fuzzing_seeds/id_000797,sync_slave2,src_000763
     png-afl/fuzzing_seeds/id_000801,sync_slave2,src_000797
     png-afl/fuzzing_seeds/id_000802,sync_slave2,src_000800
     png-afl/fuzzing_seeds/id_000803,sync_slave2,src_000762
     png-afl/fuzzing_seeds/id_000804,sync_slave2,src_000759
     png-afl/fuzzing_seeds/id_000805,sync_slave2,src_000760
     png-afl/fuzzing_seeds/id_000815,sync_slave1,src_000768,+cov
     png-afl/fuzzing_seeds/id_000816,sync_slave1,src_000782
     png-afl/fuzzing_seeds/id_000823,src_000734,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000825,src_000734,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000827,src_000734+000392,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000828,sync_slave2,src_000820
     png-afl/fuzzing_seeds/id_000829,sync_slave2,src_000823
     png-afl/fuzzing_seeds/id_000830,sync_slave2,src_000825
     png-afl/fuzzing_seeds/id_000833,sync_slave2,src_000809
     png-afl/fuzzing_seeds/id_000834,sync_slave2,src_000824
     png-afl/fuzzing_seeds/id_000835,sync_slave1,src_000822
     png-afl/fuzzing_seeds/id_000836,src_000741+000685,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000838,sync_slave1,src_000819
     png-afl/fuzzing_seeds/id_000840,src_000757,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_000840,sync_slave1,src_000821
     png-afl/fuzzing_seeds/id_000841,src_000757,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_000841,sync_slave1,src_000813
     png-afl/fuzzing_seeds/id_000842,src_000757,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_000842,sync_slave1,src_000815
     png-afl/fuzzing_seeds/id_000843,sync_slave1,src_000817
     png-afl/fuzzing_seeds/id_000848,src_000764,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000853,sync_slave2,src_000830
     png-afl/fuzzing_seeds/id_000854,sync_slave2,src_000846
     png-afl/fuzzing_seeds/id_000863,sync_slave1,src_000858
     png-afl/fuzzing_seeds/id_000864,sync_slave1,src_000855
     png-afl/fuzzing_seeds/id_000866,sync_slave2,src_000854
     png-afl/fuzzing_seeds/id_000867,sync_slave2,src_000856
     png-afl/fuzzing_seeds/id_000869,sync_slave2,src_000866
     png-afl/fuzzing_seeds/id_000873,src_000826,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000874,sync_slave1,src_000864
     png-afl/fuzzing_seeds/id_000875,sync_slave1,src_000865
     png-afl/fuzzing_seeds/id_000877,sync_slave1,src_000876
     png-afl/fuzzing_seeds/id_000878,src_000844,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000879,src_000844+000286,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000880,sync_slave1,src_000871
     png-afl/fuzzing_seeds/id_000882,sync_slave2,src_000868
     png-afl/fuzzing_seeds/id_000883,sync_slave2,src_000882
     png-afl/fuzzing_seeds/id_000884,sync_slave2,src_000873
     png-afl/fuzzing_seeds/id_000887,src_000859,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000890,sync_slave2,src_000887
     png-afl/fuzzing_seeds/id_000891,sync_slave2,src_000884
     png-afl/fuzzing_seeds/id_000892,sync_slave2,src_000883
     png-afl/fuzzing_seeds/id_000893,sync_slave1,src_000880
     png-afl/fuzzing_seeds/id_000893,sync_slave2,src_000886
     png-afl/fuzzing_seeds/id_000896,sync_slave1,src_000889
     png-afl/fuzzing_seeds/id_000898,sync_slave1,src_000885
     png-afl/fuzzing_seeds/id_000899,src_000884+000437,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000900,src_000884+000437,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000900,sync_slave1,src_000896
     png-afl/fuzzing_seeds/id_000901,src_000886+000634,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000901,sync_slave1,src_000888
     png-afl/fuzzing_seeds/id_000902,sync_slave1,src_000886
     png-afl/fuzzing_seeds/id_000903,sync_slave1,src_000897
     png-afl/fuzzing_seeds/id_000904,sync_slave1,src_000898
     png-afl/fuzzing_seeds/id_000908,src_000892,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000909,src_000883,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000910,src_000883,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_000910,sync_master,src_000805
     png-afl/fuzzing_seeds/id_000911,sync_master,src_000806
     png-afl/fuzzing_seeds/id_000912,sync_master,src_000804
     png-afl/fuzzing_seeds/id_000913,sync_master,src_000803
     png-afl/fuzzing_seeds/id_000921,sync_slave1,src_000915
     png-afl/fuzzing_seeds/id_000922,src_000903+000394,op_splice,rep_8
     png-afl/fuzzing_seeds/id_000927,sync_slave1,src_000914
     png-afl/fuzzing_seeds/id_000929,sync_slave2,src_000913
     png-afl/fuzzing_seeds/id_000930,sync_slave2,src_000911
     png-afl/fuzzing_seeds/id_000932,sync_slave2,src_000928
     png-afl/fuzzing_seeds/id_000933,sync_slave2,src_000912
     png-afl/fuzzing_seeds/id_000937,sync_slave1,src_000937
     png-afl/fuzzing_seeds/id_000938,sync_slave1,src_000938
     png-afl/fuzzing_seeds/id_000939,sync_slave1,src_000936
     png-afl/fuzzing_seeds/id_000940,sync_slave1,src_000940
     png-afl/fuzzing_seeds/id_000941,src_000933,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_000942,sync_slave1,src_000928
     png-afl/fuzzing_seeds/id_000943,sync_slave2,src_000932
     png-afl/fuzzing_seeds/id_000944,sync_slave2,src_000930
     png-afl/fuzzing_seeds/id_000946,src_000717+000621,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000947,src_000717+000666,op_splice,rep_64
     png-afl/fuzzing_seeds/id_000949,src_000823+000612,op_splice,rep_32
     png-afl/fuzzing_seeds/id_000950,sync_slave1,src_000950
     png-afl/fuzzing_seeds/id_000951,sync_slave2,src_000947
     png-afl/fuzzing_seeds/id_000952,sync_slave2,src_000948
     png-afl/fuzzing_seeds/id_000959,sync_slave2,src_000955
     png-afl/fuzzing_seeds/id_000962,sync_slave2,src_000958
     png-afl/fuzzing_seeds/id_000963,sync_slave2,src_000960
     png-afl/fuzzing_seeds/id_000964,sync_slave2,src_000959
     png-afl/fuzzing_seeds/id_000965,sync_slave2,src_000961
     png-afl/fuzzing_seeds/id_000972,src_000744+000071,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000974,src_000122+000812,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000976,src_000335+000572,op_splice,rep_2
     png-afl/fuzzing_seeds/id_000979,sync_slave2,src_000976
     png-afl/fuzzing_seeds/id_000980,src_000405+000752,op_splice,rep_16
     png-afl/fuzzing_seeds/id_000981,sync_master,src_000872
     png-afl/fuzzing_seeds/id_000982,src_000707+000635,op_splice,rep_4
     png-afl/fuzzing_seeds/id_000983,sync_master,src_000873
     png-afl/fuzzing_seeds/id_000986,sync_master,src_000875
     png-afl/fuzzing_seeds/id_000990,src_000937,op_arith8,pos_83,val_-33
     png-afl/fuzzing_seeds/id_000992,sync_master,src_000877
     png-afl/fuzzing_seeds/id_001015,src_001007+000010,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001023,src_001016,op_havoc,rep_32,+cov
     png-afl/fuzzing_seeds/id_001032,src_001025,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001047,src_000934,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001053,sync_master,src_000927
     png-afl/fuzzing_seeds/id_001054,sync_slave2,src_001053
     png-afl/fuzzing_seeds/id_001057,sync_slave2,src_001056
     png-afl/fuzzing_seeds/id_001058,sync_slave2,src_001058
     png-afl/fuzzing_seeds/id_001059,sync_slave2,src_001057
     png-afl/fuzzing_seeds/id_001060,sync_slave2,src_001060,+cov
     png-afl/fuzzing_seeds/id_001061,sync_slave2,src_001059
     png-afl/fuzzing_seeds/id_001062,src_001058+001012,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001063,sync_slave1,src_001063
     png-afl/fuzzing_seeds/id_001066,sync_master,src_000944
     png-afl/fuzzing_seeds/id_001068,sync_slave2,src_001068
     png-afl/fuzzing_seeds/id_001069,sync_slave2,src_001067
     png-afl/fuzzing_seeds/id_001070,src_001031,op_havoc,rep_32
     png-afl/fuzzing_seeds/id_001071,sync_slave2,src_001070
     png-afl/fuzzing_seeds/id_001072,sync_master,src_000952
     png-afl/fuzzing_seeds/id_001073,src_000874,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001074,sync_slave2,src_001073
     png-afl/fuzzing_seeds/id_001077,sync_slave2,src_001076
     png-afl/fuzzing_seeds/id_001078,sync_master,src_000957
     png-afl/fuzzing_seeds/id_001079,sync_master,src_000959
     png-afl/fuzzing_seeds/id_001080,sync_master,src_000960
     png-afl/fuzzing_seeds/id_001082,sync_master,src_000961
     png-afl/fuzzing_seeds/id_001083,sync_master,src_000962
     png-afl/fuzzing_seeds/id_001087,sync_slave2,src_001086
     png-afl/fuzzing_seeds/id_001088,src_000696+000957,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001091,sync_slave1,src_001090
     png-afl/fuzzing_seeds/id_001093,src_000094+001072,op_splice,rep_32
     png-afl/fuzzing_seeds/id_001094,sync_slave2,src_001093
     png-afl/fuzzing_seeds/id_001095,sync_slave2,src_001094
     png-afl/fuzzing_seeds/id_001096,sync_slave2,src_001095
     png-afl/fuzzing_seeds/id_001097,sync_slave2,src_001096
     png-afl/fuzzing_seeds/id_001099,sync_master,src_000974
     png-afl/fuzzing_seeds/id_001101,sync_master,src_000981
     png-afl/fuzzing_seeds/id_001102,sync_master,src_000980
     png-afl/fuzzing_seeds/id_001105,sync_master,src_000985
     png-afl/fuzzing_seeds/id_001110,sync_slave2,src_001109
     png-afl/fuzzing_seeds/id_001114,sync_slave2,src_001113
     png-afl/fuzzing_seeds/id_001115,sync_slave1,src_001115
     png-afl/fuzzing_seeds/id_001117,sync_slave1,src_001117
     png-afl/fuzzing_seeds/id_001120,sync_slave1,src_001119
     png-afl/fuzzing_seeds/id_001120,sync_slave2,src_001118
     png-afl/fuzzing_seeds/id_001122,sync_slave2,src_001121
     png-afl/fuzzing_seeds/id_001124,sync_master,src_001003
     png-afl/fuzzing_seeds/id_001127,sync_slave1,src_001127
     png-afl/fuzzing_seeds/id_001130,src_000227+001038,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001131,sync_master,src_001006
     png-afl/fuzzing_seeds/id_001133,sync_master,src_001012
     png-afl/fuzzing_seeds/id_001138,sync_slave1,src_001138
     png-afl/fuzzing_seeds/id_001142,sync_master,src_001020
     png-afl/fuzzing_seeds/id_001143,sync_master,src_001021,+cov
     png-afl/fuzzing_seeds/id_001146,sync_master,src_001023
     png-afl/fuzzing_seeds/id_001148,sync_slave2,src_001146
     png-afl/fuzzing_seeds/id_001150,src_000746+001141,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001157,sync_slave2,src_001156
     png-afl/fuzzing_seeds/id_001158,src_000349+001121,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001159,src_000390+001130,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001160,src_001014,op_havoc,rep_32
     png-afl/fuzzing_seeds/id_001163,sync_slave2,src_001162
     png-afl/fuzzing_seeds/id_001169,src_001168,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001171,sync_slave2,src_001169
     png-afl/fuzzing_seeds/id_001176,sync_master,src_001053
     png-afl/fuzzing_seeds/id_001177,src_001090,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001178,sync_slave1,src_001178
     png-afl/fuzzing_seeds/id_001179,src_001142,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001180,sync_slave2,src_001179
     png-afl/fuzzing_seeds/id_001181,sync_slave2,src_001181
     png-afl/fuzzing_seeds/id_001184,sync_slave2,src_001182
     png-afl/fuzzing_seeds/id_001187,sync_slave1,src_001186
     png-afl/fuzzing_seeds/id_001188,sync_slave2,src_001185
     png-afl/fuzzing_seeds/id_001189,sync_master,src_001058
     png-afl/fuzzing_seeds/id_001190,src_001165,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001190,sync_master,src_001059
     png-afl/fuzzing_seeds/id_001193,src_001192,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001194,src_001192,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001194,sync_slave1,src_001193
     png-afl/fuzzing_seeds/id_001197,sync_slave1,src_001195
     png-afl/fuzzing_seeds/id_001204,sync_slave1,src_001202
     png-afl/fuzzing_seeds/id_001205,sync_slave1,src_001203
     png-afl/fuzzing_seeds/id_001206,src_001197,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001207,sync_slave1,src_001205
     png-afl/fuzzing_seeds/id_001211,sync_slave1,src_001210
     png-afl/fuzzing_seeds/id_001212,sync_slave1,src_001209
     png-afl/fuzzing_seeds/id_001213,sync_slave2,src_001213
     png-afl/fuzzing_seeds/id_001214,sync_slave2,src_001214
     png-afl/fuzzing_seeds/id_001219,sync_slave2,src_001218
     png-afl/fuzzing_seeds/id_001221,sync_slave1,src_001201
     png-afl/fuzzing_seeds/id_001222,sync_slave1,src_001211
     png-afl/fuzzing_seeds/id_001223,src_001216,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001223,sync_slave1,src_001208
     png-afl/fuzzing_seeds/id_001227,sync_slave1,src_001227
     png-afl/fuzzing_seeds/id_001230,src_001223,op_havoc,rep_2,+cov
     png-afl/fuzzing_seeds/id_001234,sync_slave1,src_001228
     png-afl/fuzzing_seeds/id_001235,src_001224+001042,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001236,src_001226,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001237,src_001229+000936,op_splice,rep_8,+cov
     png-afl/fuzzing_seeds/id_001241,sync_slave2,src_001238,+cov
     png-afl/fuzzing_seeds/id_001242,sync_slave1,src_001239
     png-afl/fuzzing_seeds/id_001244,src_001238,op_havoc,rep_4,+cov
     png-afl/fuzzing_seeds/id_001245,sync_slave1,src_001244
     png-afl/fuzzing_seeds/id_001246,sync_slave1,src_001245
     png-afl/fuzzing_seeds/id_001249,sync_slave1,src_001246
     png-afl/fuzzing_seeds/id_001254,src_001247,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001262,src_001247,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001262,sync_slave2,src_001257
     png-afl/fuzzing_seeds/id_001268,src_001258,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001269,sync_slave2,src_001258
     png-afl/fuzzing_seeds/id_001270,src_001258,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001270,sync_slave2,src_001269
     png-afl/fuzzing_seeds/id_001271,src_001258,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001272,src_001265,op_havoc,rep_4,+cov
     png-afl/fuzzing_seeds/id_001273,src_001258+000778,op_splice,rep_128
     png-afl/fuzzing_seeds/id_001276,src_001272,op_havoc,rep_2,+cov
     png-afl/fuzzing_seeds/id_001277,src_001272,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001278,src_001274,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001284,src_000312+001247,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001285,sync_slave1,src_001282
     png-afl/fuzzing_seeds/id_001286,sync_slave1,src_001281
     png-afl/fuzzing_seeds/id_001290,src_001282,op_havoc,rep_32,+cov
     png-afl/fuzzing_seeds/id_001291,src_001179+001231,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001292,src_001252,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001297,src_001266+001055,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001298,src_001276,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001299,src_001298,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001300,src_001299,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001301,sync_slave1,src_001297,+cov
     png-afl/fuzzing_seeds/id_001302,src_001301+001145,op_splice,rep_2,+cov
     png-afl/fuzzing_seeds/id_001303,sync_slave1,src_001299
     png-afl/fuzzing_seeds/id_001305,sync_slave1,src_001301
     png-afl/fuzzing_seeds/id_001308,src_000156+001304,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001310,src_000951+001051,op_splice,rep_32
     png-afl/fuzzing_seeds/id_001311,src_001111,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001313,sync_slave1,src_001310
     png-afl/fuzzing_seeds/id_001314,sync_slave1,src_001309
     png-afl/fuzzing_seeds/id_001319,sync_slave1,src_001312
     png-afl/fuzzing_seeds/id_001323,sync_slave1,src_001320
     png-afl/fuzzing_seeds/id_001331,src_000370+001160,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001332,sync_slave1,src_001328
     png-afl/fuzzing_seeds/id_001336,src_001255+000967,op_splice,rep_2,+cov
     png-afl/fuzzing_seeds/id_001342,sync_slave1,src_001337
     png-afl/fuzzing_seeds/id_001350,sync_slave1,src_001345
     png-afl/fuzzing_seeds/id_001351,src_001347,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001353,sync_slave1,src_001348
     png-afl/fuzzing_seeds/id_001354,sync_slave1,src_001351
     png-afl/fuzzing_seeds/id_001355,sync_slave1,src_001353
     png-afl/fuzzing_seeds/id_001357,sync_slave1,src_001352
     png-afl/fuzzing_seeds/id_001360,src_001351+001198,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001363,src_001352,op_havoc,rep_32
     png-afl/fuzzing_seeds/id_001367,sync_slave2,src_001367
     png-afl/fuzzing_seeds/id_001368,src_001352,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_001370,src_001352,op_havoc,rep_128
     png-afl/fuzzing_seeds/id_001371,src_001352,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_001372,src_001352,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001373,src_001352,op_havoc,rep_128
     png-afl/fuzzing_seeds/id_001374,src_001352,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001376,src_001352,op_havoc,rep_32
     png-afl/fuzzing_seeds/id_001377,src_001352,op_havoc,rep_32
     png-afl/fuzzing_seeds/id_001378,sync_slave2,src_001378
     png-afl/fuzzing_seeds/id_001379,src_001352,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001380,src_001352,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_001381,sync_slave2,src_001381
     png-afl/fuzzing_seeds/id_001382,sync_slave1,src_001380
     png-afl/fuzzing_seeds/id_001385,src_001368,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001386,sync_slave1,src_001383
     png-afl/fuzzing_seeds/id_001387,sync_slave1,src_001384
     png-afl/fuzzing_seeds/id_001388,src_000370+001144,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001392,sync_slave1,src_001389
     png-afl/fuzzing_seeds/id_001394,src_000484,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001395,sync_slave1,src_001392
     png-afl/fuzzing_seeds/id_001397,src_001394,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001399,src_001391,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001400,sync_slave1,src_001397
     png-afl/fuzzing_seeds/id_001405,sync_slave1,src_001402
     png-afl/fuzzing_seeds/id_001406,sync_slave1,src_001403
     png-afl/fuzzing_seeds/id_001408,src_001399,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001409,src_001400,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001411,sync_slave1,src_001408
     png-afl/fuzzing_seeds/id_001414,src_001395,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_001418,sync_slave1,src_001415,+cov
     png-afl/fuzzing_seeds/id_001420,src_001104+000085,op_splice,rep_8
     png-afl/fuzzing_seeds/id_001423,src_001412,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001424,src_001412,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001427,sync_slave1,src_001424
     png-afl/fuzzing_seeds/id_001431,src_001430,op_havoc,rep_8,+cov
     png-afl/fuzzing_seeds/id_001436,sync_slave1,src_001433
     png-afl/fuzzing_seeds/id_001442,src_001435,op_havoc,rep_4,+cov
     png-afl/fuzzing_seeds/id_001461,sync_slave2,src_001458
     png-afl/fuzzing_seeds/id_001462,src_001437,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001466,sync_slave2,src_001465
     png-afl/fuzzing_seeds/id_001472,sync_slave2,src_001471
     png-afl/fuzzing_seeds/id_001473,src_001322,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001474,sync_slave2,src_001473
     png-afl/fuzzing_seeds/id_001476,src_001466,op_havoc,rep_8
     png-afl/fuzzing_seeds/id_001478,src_001474,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001480,sync_slave2,src_001476
     png-afl/fuzzing_seeds/id_001482,sync_slave2,src_001479
     png-afl/fuzzing_seeds/id_001484,sync_slave2,src_001481
     png-afl/fuzzing_seeds/id_001485,src_001483,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001490,sync_slave2,src_001488
     png-afl/fuzzing_seeds/id_001493,src_000093+001077,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001499,src_001297+001456,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001501,src_001499,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001502,sync_slave2,src_001500
     png-afl/fuzzing_seeds/id_001506,src_001495,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001507,src_001501,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001511,sync_slave2,src_001509
     png-afl/fuzzing_seeds/id_001514,sync_slave2,src_001512
     png-afl/fuzzing_seeds/id_001515,src_001091+001502,op_splice,rep_4
     png-afl/fuzzing_seeds/id_001516,src_001312+000781,op_splice,rep_32
     png-afl/fuzzing_seeds/id_001525,src_001524,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001527,sync_slave2,src_001525
     png-afl/fuzzing_seeds/id_001530,sync_slave2,src_001527
     png-afl/fuzzing_seeds/id_001531,sync_slave2,src_001529
     png-afl/fuzzing_seeds/id_001533,sync_slave2,src_001531
     png-afl/fuzzing_seeds/id_001534,sync_slave2,src_001532
     png-afl/fuzzing_seeds/id_001535,src_001493,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001536,sync_slave2,src_001533
     png-afl/fuzzing_seeds/id_001539,sync_slave2,src_001537
     png-afl/fuzzing_seeds/id_001540,src_001536,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001542,src_000567+001540,op_splice,rep_2
     png-afl/fuzzing_seeds/id_001544,src_001346,op_havoc,rep_16
     png-afl/fuzzing_seeds/id_001546,sync_slave2,src_001544
     png-afl/fuzzing_seeds/id_001547,src_001365,op_havoc,rep_64
     png-afl/fuzzing_seeds/id_001548,src_001346+001460,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001550,sync_slave2,src_001548
     png-afl/fuzzing_seeds/id_001551,src_001345+001497,op_splice,rep_8
     png-afl/fuzzing_seeds/id_001552,src_001088+001503,op_splice,rep_16
     png-afl/fuzzing_seeds/id_001557,src_001114,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001558,sync_slave2,src_001556
     png-afl/fuzzing_seeds/id_001559,src_001555,op_havoc,rep_2
     png-afl/fuzzing_seeds/id_001560,src_001557,op_havoc,rep_4
     png-afl/fuzzing_seeds/id_001562,src_001561,op_havoc,rep_4
    
    opened by Shnatsel 10
  • Remove duplicated crc32 algorithm

    Remove duplicated crc32 algorithm

    There's a crc32 implementation in src/crc.rs

    A duplicate also lives in tests/check_testimages.rs

    This issue is for reusing the code from src/crc.rs and deleting the duplicated code in tests/check_testimages.rs

    easy 
    opened by martinlindhe 10
  • This is also an encoder library!

    This is also an encoder library!

    I see you also have encoder functionality. The piston crate in fact gives its to its users, so I assume its mature?

    Would it be possible to update the github description of the repo and the description in Cargo.toml to reflect that?

    I'm coming from a discussion in IRC where someone erroneously assumed (probably due to this misinformation) that this crate can only decode.

    Thanks!

    opened by est31 10
  • [Perforamnce] Feature to use Zlib-ng

    [Perforamnce] Feature to use Zlib-ng

    For my workflow (Gstreamer encoding 50 fps in 4k using https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/tree/main/video/png) I needed a bit of performance. This more or less solved my speed issues.

    opened by reinismu 9
  • Regression: PNG which parsed in 0.16 fails to parse in 0.17

    Regression: PNG which parsed in 0.16 fails to parse in 0.17

    During QA testing this issue came up. I have a full example which reproduces it here: https://github.com/Follpvosten/png-parse-regression Basically, the standard example from the docs used to decode this PNG fine. In 0.17, it doesn't work anymore. The example I wrote has two tests which confirm that.

    I have other example files which fail to parse if that's useful, and if I can do anything else to help with this issue, please let me know. We won't be able to use 0.17 (and thus image 0.24) in production until this is fixed.

    opened by Follpvosten 9
  • Add APNG Encode Support

    Add APNG Encode Support

    Missing support for a couple of features, but seems to work.

    This probably isn't ready to merge as is, but I thought I'd make the PR anyways to get some feedback.

    opened by rrbutani 9
  • Autovectorize paeth unfiltering

    Autovectorize paeth unfiltering

    Unfiltering paeth image data is particularly tricky because each pixel depends on both the pixel above and to the right. This PR adds a unfilter_paeth_strip method which processes 8 consecutive paeth filtered rows at a time, along with a bunch of rather messy bookkeeping to properly call it.

    $ cargo run --example corpus-bench --release qoi_benchmark_suite
    
    main   55 mps   0.19 GiB/s
    PR     92 mps   0.31 GiB/s
    

    The trick is that it processes pixels along a diagonal swatch of the strip. (I'll include some diagram/explanation like this in the final PR)

    P = previous row passed as input
    X = computed serially at start
    . = first swatch processed with SIMD
    0 = computed serially at end 
    
    prev [PPPPPPPPPPPPPPPPPPPPPPPP]
    row0 [XXXXXXXX.               ]
    row1 [XXXXXXX.               0]
    row2 [XXXXXX.               00]
    row3 [XXXXX.               000]
    row4 [XXXX.               0000]
    row5 [XXX.               00000]
    row6 [XX.               000000]
    row7 [X.               0000000]
    
    opened by fintelia 0
  • Faster decoding of fdeflate encoded PNGs

    Faster decoding of fdeflate encoded PNGs

    When a PNG has been encoded with fdeflate compression method added in #364, the decoder can make some assumptions that improve decoding performance. This PR adds a check on whether fdeflate compression was used and decompresses the image data accordingly.

    opened by fintelia 0
  • Improve corpus-bench benchmark

    Improve corpus-bench benchmark

    • Factors out run_encode and run_decode into independent functions, making it easier to inspect performance in a profiler.
    • Changes decoding to write into a pre-allocated buffer.
    • Extra decimal place in the reported bandwidth numbers.
    opened by fintelia 0
  • Add CIFuzz GitHub action

    Add CIFuzz GitHub action

    Add CIFuzz workflow action to have fuzzers build and run on each PR.

    This is a service offered by OSS-Fuzz where image-png already runs (https://github.com/google/oss-fuzz/tree/master/projects/image-png). CIFuzz can help detect regressions and catch fuzzing build issues early, and has a variety of features (see the URL above). In the current PR the fuzzers gets build on a pull request and will run for 300 seconds.

    opened by DavidKorczynski 3
  • Warn instead of crashing on duplicate iCCP chunk

    Warn instead of crashing on duplicate iCCP chunk

    Fixes https://github.com/image-rs/image/issues/1825

    Before:

         Running `target/debug/test_rust`
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Format(FormatError { inner: DuplicateChunk { kind: ChunkType { type: iCCP, critical: false, private: false, reserved: false, safecopy: false } } })', src/main.rs:6966:42
    

    After (using env_logger):

         Running `target/debug/test_rust`
    [2022-11-21T12:00:04Z WARN  png::decoder::stream] iCCP chunks must appear at most once
    

    Should other kinds of duplicate chunks be converted into warnings too?

    opened by kangalioo 3
Owner
image-rs
Image libraries for Rust
image-rs
Encoding and decoding images in Rust

Image Maintainers: @HeroicKatora, @fintelia How to contribute An Image Processing Library This crate provides basic image processing functions and met

image-rs 3.5k Jan 2, 2023
A simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art version constructed with emoji

EmojiPix This is a simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art vers

Michael Milton 22 Dec 6, 2022
Rust library to get image size and format without loading/decoding

imageinfo-rs Rust library to get image size and format without loading/decoding. The imageinfo don't get image format by file ext name, but infer by f

xiaozhuai, Weihang Ding 47 Dec 30, 2022
Refract - A guided AVIF/JPEG XL/WebP conversion utility for JPEG and PNG sources.

Refract GTK Refract is a guided image conversion tool written in Rust for x86-64 Linux systems with GTK. It takes JPEG and PNG image sources and produ

Blobfolio 34 Nov 28, 2022
🖼️Combines a Javascript and WASM file into a single executable polygot PNG+HTML file.

WASIMAGE Combines a Javascript and WASM file into a single executable polygot PNG+HTML file. Usage: cargo install wasimage wasimage --wasm-file my.was

Nervive 2 Mar 30, 2022
Oxipng - a multithreaded lossless PNG compression optimizer

Oxipng Overview Oxipng is a multithreaded lossless PNG compression optimizer. It can be used via a command-line interface or as a library in other Rus

Josh Holmer 1.8k Dec 28, 2022
Add image watermark for multiple file (jpeg, jpg, png, tiff, bmp,etc)

Rust image watermark Add image watermark CLI program for multiple image format (jpeg, jpg, png, tiff, bmp, etc.) manipulation, browser WASM build supp

Johnathan 5 Jan 20, 2023
A collection of mapping suites and useful algorithms, implemented in pure Rust

Unstable API Note that this crate is in early development, breaking API changes are to be expected. Usage Add this to your Cargo.toml: [dependencies]

Emily Matheys 7 Aug 31, 2023
😱 Dead fast thumbnail library for browser and NodeJs! Built with Rust 🦀 and WebAssembly 🕸

thumbo-core ?? Dead fast thumbnail library for browser and NodeJs Built with Rust ?? & WebAssembly ?? ?? About thumbo-core is a thubnail library for b

Victor Aremu 12 Dec 2, 2022
A linear algebra and mathematics library for computer graphics.

cgmath-rs A linear algebra and mathematics library for computer graphics. The library provides: vectors: Vector2, Vector3, Vector4 square matrices: Ma

rustgd 998 Jan 2, 2023
A Rust library for calculating perceptual hash values of images

img_hash Now builds on stable Rust! (But needs nightly to bench.) A library for getting perceptual hash values of images. Thanks to Dr. Neal Krawetz f

Austin Bonander 264 Dec 9, 2022
A simple steganography library written in rust

steganography A stable steganography library written in rust Crates.io Usage Add the following to the Cargo.toml in your project: [dependencies] stega

Teodor Voinea 79 Dec 9, 2022
Face detection library for the Rust programming language

Rustface SeetaFace detection library for the Rust programming language Example of demo program output SEETAFACE C++ – Github repository for the origin

Andrei Tomashpolskiy 323 Dec 27, 2022
A Simple-to-use, cross-platform Rust Webcam Capture Library

Cross Platform Rust Library for powerful Webcam Capture and Virtual Webcams

null 246 Jan 8, 2023
Rust library for fast image resizing with using of SIMD instructions.

fast_image_resize Rust library for fast image resizing with using of SIMD instructions. CHANGELOG Supported pixel formats and available optimisations:

Kirill Kuzminykh 115 Jan 5, 2023
An advanced image processing library for Rust.

ImageProc Maintainers: @chyh1990 Note: this project is under active depvelopment, API may change! imageproc is a advanced image proccessing library fo

Chen Yuheng 97 Oct 18, 2022
Image operation rust library

Image operation rust library

LongYinan 166 Dec 20, 2022
Antialiased 2D vector drawing library in Rust for Android, Web, Desktop

nonaquad Vector anti-aliased graphics renderer for Android, WASM, Desktop in Rust, using miniquad. This library started as a port of NanoVG for miniqu

Nokola 33 Nov 14, 2022
Antialiased 2D vector drawing library written in Rust

femtovg Join the femtovg Discord channel Work in progress! Antialiased 2D vector drawing library written in Rust.

Tomasz Sterna 0 Aug 24, 2021