Last active
July 21, 2024 09:42
-
-
Save prongbang/d88d4dc7d076a9d6132bd1fda8f4f9b0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use flate2::write::GzEncoder; | |
use flate2::Compression; | |
use log::info; | |
use std::fs::File; | |
use std::io::{copy, Error}; | |
use std::io::BufReader; | |
use std::time::Instant; | |
use std::fs::File; | |
use std::io::{BufReader, Cursor, Read, Write}; | |
use flate2::Compression; | |
use flate2::write::{GzEncoder, ZlibEncoder}; | |
use lopdf::{Document, Object}; | |
use zstd::stream::Encoder; | |
pub fn compress(input: Vec<u8>, output: String, level: u32) -> Result<u64, Error> { | |
let mut input = BufReader::new(input.as_slice()); | |
let output = File::create(output)?; | |
let mut encoder = GzEncoder::new(output, Compression::new(level)); | |
let start = Instant::now(); | |
copy(&mut input, &mut encoder)?; | |
let output = encoder.finish()?; | |
let meta = output.metadata()?; | |
info!("Elapsed: {:?}", start.elapsed()); | |
Ok(meta.len()) | |
} | |
// Gzip | |
let mut encoder = GzEncoder::new(Vec::new(), Compression::best()); | |
encoder.write_all(stream.content.as_slice())?; | |
let compressed = encoder.finish()?; | |
// Zlib | |
let mut encoder = ZlibEncoder::new(Vec::new(), Compression::best()); | |
encoder.write_all(stream.content.as_slice())?; | |
let compressed = encoder.finish()?; | |
// Zstd | |
let mut encoder = Encoder::new(Vec::new(), level)?; | |
encoder.write_all(stream.content.as_slice())?; | |
let compressed = encoder.finish()?; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment