Skip to content

Commit 05abc87

Browse files
Jpg export
1 parent 0ba273d commit 05abc87

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

desktop/wrapper/src/intercept_frontend_message.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,33 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
6969
file_type,
7070
name,
7171
} => {
72+
let Some(image) = image::RgbaImage::from_raw(width, height, data) else {
73+
tracing::error!("Failed to create image buffer for export");
74+
return None;
75+
};
76+
7277
let mut encoded = Vec::new();
78+
let mut cursor = std::io::Cursor::new(&mut encoded);
7379

7480
use graphite_editor::messages::frontend::utility_types::FileType;
75-
use image::ColorType;
76-
use image::ImageEncoder;
81+
use image::buffer::ConvertBuffer;
7782
match file_type {
7883
FileType::Png => {
79-
let result = image::codecs::png::PngEncoder::new(std::io::Cursor::new(&mut encoded)).write_image(&data, width, height, ColorType::Rgba8.into());
84+
let result = if transparent {
85+
image.write_to(&mut cursor, image::ImageFormat::Png)
86+
// TODO: find out why this is never triggered and fix it
87+
} else {
88+
let image: image::RgbImage = image.convert();
89+
image.write_to(&mut cursor, image::ImageFormat::Png)
90+
};
8091
if let Err(err) = result {
8192
tracing::error!("Failed to encode PNG: {err}");
8293
return None;
8394
}
8495
}
8596
FileType::Jpg => {
86-
let result = image::codecs::jpeg::JpegEncoder::new(std::io::Cursor::new(&mut encoded)).write_image(&data, width, height, ColorType::Rgba8.into());
97+
let image: image::RgbImage = image.convert();
98+
let result = image.write_to(&mut cursor, image::ImageFormat::Jpeg);
8799
if let Err(err) = result {
88100
tracing::error!("Failed to encode JPG: {err}");
89101
return None;
@@ -106,8 +118,6 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
106118
format!("{name}.{file_extension}")
107119
};
108120

109-
println!("Successfully encoded image, size: {} bytes", encoded.len());
110-
111121
dispatcher.respond(DesktopFrontendMessage::SaveFileDialog {
112122
title: "Export".to_string(),
113123
default_filename,

0 commit comments

Comments
 (0)