diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index d18c87172d4..c56da9a0b66 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -31,7 +31,6 @@ use crate::dom::virtualmethods::VirtualMethods; use crate::dom::webgl2renderingcontext::WebGL2RenderingContext; use crate::dom::webglrenderingcontext::WebGLRenderingContext; use crate::script_runtime::JSContext; -use base64::Engine; use canvas_traits::canvas::{CanvasId, CanvasMsg, FromScriptMsg}; use canvas_traits::webgl::{GLContextAttributes, WebGLVersion}; use dom_struct::dom_struct; @@ -425,16 +424,17 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement { }; // FIXME: Only handle image/png for now. - let mut png = Vec::new(); + let mut url = "data:image/png;base64,".to_owned(); + let mut encoder = base64::write::EncoderStringWriter::from_consumer( + &mut url, + &base64::engine::general_purpose::STANDARD, + ); // FIXME(nox): https://github.com/image-rs/image-png/issues/86 // FIXME(nox): https://github.com/image-rs/image-png/issues/87 - PngEncoder::new(&mut png) + PngEncoder::new(&mut encoder) .write_image(&file, self.Width(), self.Height(), ColorType::Rgba8) .unwrap(); - let mut url = "data:image/png;base64,".to_owned(); - // FIXME(nox): Should this use base64::URL_SAFE? - // FIXME(nox): https://github.com/marshallpierce/rust-base64/pull/56 - base64::engine::general_purpose::STANDARD.encode_string(&png, &mut url); + encoder.into_inner(); Ok(USVString(url)) }