diff --git a/Cargo.lock b/Cargo.lock index 0517212c3..63fd1dfd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1058,12 +1058,11 @@ dependencies = [ [[package]] name = "deflate" -version = "0.8.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" dependencies = [ "adler32", - "byteorder", ] [[package]] @@ -1947,9 +1946,9 @@ dependencies = [ [[package]] name = "image" -version = "0.23.14" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +checksum = "db207d030ae38f1eb6f240d5a1c1c88ff422aa005d10f8c6c6fc5e75286ab30e" dependencies = [ "bytemuck", "byteorder", @@ -2036,9 +2035,9 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "jpeg-decoder" -version = "0.1.22" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" +checksum = "105fb082d64e2100074587f59a74231f771750c664af903f1f9f76c9dedfc6f1" [[package]] name = "js-sys" @@ -2248,15 +2247,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "miniz_oxide" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" -dependencies = [ - "adler32", -] - [[package]] name = "miniz_oxide" version = "0.4.4" @@ -2267,6 +2257,15 @@ dependencies = [ "autocfg 1.1.0", ] +[[package]] +name = "miniz_oxide" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" +dependencies = [ + "adler", +] + [[package]] name = "mutate_once" version = "0.1.1" @@ -2411,9 +2410,9 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" dependencies = [ "autocfg 1.1.0", "num-integer", @@ -2739,14 +2738,14 @@ dependencies = [ [[package]] name = "png" -version = "0.16.8" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" dependencies = [ "bitflags", "crc32fast", "deflate", - "miniz_oxide 0.3.7", + "miniz_oxide 0.5.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 637eaf344..187077141 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ encoded-words = { git = "https://github.com/async-email/encoded-words", branch=" escaper = "0.1" futures = "0.3" hex = "0.4.0" -image = { version = "0.23.5", default-features=false, features = ["gif", "jpeg", "ico", "png", "pnm", "webp", "bmp"] } +image = { version = "0.24.1", default-features=false, features = ["gif", "jpeg", "ico", "png", "pnm", "webp", "bmp"] } kamadak-exif = "0.5" lettre_email = { git = "https://github.com/deltachat/lettre", branch = "master" } libc = "0.2" diff --git a/src/blob.rs b/src/blob.rs index d652add20..0051327e0 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -3,17 +3,14 @@ use core::cmp::max; use std::ffi::OsStr; use std::fmt; +use std::io::Cursor; use async_std::path::{Path, PathBuf}; use async_std::prelude::*; use async_std::{fs, io}; -use anyhow::format_err; -use anyhow::Context as _; -use anyhow::Error; -use image::DynamicImage; -use image::GenericImageView; -use image::ImageFormat; +use anyhow::{format_err, Context as _, Error}; +use image::{DynamicImage, ImageFormat}; use num_traits::FromPrimitive; use thiserror::Error; @@ -449,7 +446,8 @@ impl<'a> BlobObject<'a> { fn encode_img(img: &DynamicImage, encoded: &mut Vec) -> anyhow::Result<()> { encoded.clear(); - img.write_to(encoded, image::ImageFormat::Jpeg)?; + let mut buf = Cursor::new(encoded); + img.write_to(&mut buf, image::ImageFormat::Jpeg)?; Ok(()) } fn encoded_img_exceeds_bytes( @@ -619,16 +617,14 @@ pub enum BlobError { mod tests { use fs::File; - use super::*; - - use crate::chat::{create_group_chat, ProtectionStatus}; - use crate::{ - chat, - message::Message, - test_utils::{self, TestContext}, - }; use anyhow::Result; - use image::Pixel; + use image::{GenericImageView, Pixel}; + + use crate::chat::{self, create_group_chat, ProtectionStatus}; + use crate::message::Message; + use crate::test_utils::{self, TestContext}; + + use super::*; #[async_std::test] async fn test_create() { @@ -960,10 +956,11 @@ mod tests { .unwrap(); assert_correct_rotation(&img_rotated); - let mut bytes = vec![]; + let mut buf = Cursor::new(vec![]); img_rotated - .write_to(&mut bytes, image::ImageFormat::Jpeg) + .write_to(&mut buf, image::ImageFormat::Jpeg) .unwrap(); + let bytes = buf.into_inner(); let img_rotated = send_image_check_mediaquality( Some("0"), &bytes,