Fix issue with image output from Jupyter kernels that didn't use base64 padding (#20561)
This upgrades `nbformat` and `runtimelib` to handle jupyter types with even more validation and flexiblity. This also processes any multiline string data coming from the kernel, including with image data (like `image/png`). While I was at it I also fixed a longstanding issue around images by eliminating all whitespace (something `atob` does) and using the no pad decoder. Fixes: #17956 Before: <img width="741" alt="image" src="https://github.com/user-attachments/assets/37ec2cae-ce78-4475-aaa3-4d785e4015d0"> After: <img width="727" alt="image" src="https://github.com/user-attachments/assets/e2431ba2-048b-4205-9898-54f357795a9c"> Release Notes: - Fixed issue with image output from REPL kernels that didn't use base64 padding
This commit is contained in:
parent
3ebb64ea1d
commit
466d3316a0
3 changed files with 12 additions and 10 deletions
|
@ -16,9 +16,12 @@ pub struct ImageView {
|
|||
|
||||
impl ImageView {
|
||||
pub fn from(base64_encoded_data: &str) -> Result<Self> {
|
||||
let bytes = BASE64_STANDARD.decode(base64_encoded_data.trim())?;
|
||||
let filtered =
|
||||
base64_encoded_data.replace(&[' ', '\n', '\t', '\r', '\x0b', '\x0c'][..], "");
|
||||
let bytes = BASE64_STANDARD_NO_PAD.decode(filtered)?;
|
||||
|
||||
let format = image::guess_format(&bytes)?;
|
||||
|
||||
let mut data = image::load_from_memory_with_format(&bytes, format)?.into_rgba8();
|
||||
|
||||
// Convert from RGBA to BGRA.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue