mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Implement WebP support
This also updates the image crate to 0.24.2 Signed-off-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>
This commit is contained in:
parent
c23adde5a3
commit
b2ea5f0160
4 changed files with 22 additions and 12 deletions
|
@ -3,8 +3,8 @@
|
|||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use crate::image_cache::CorsStatus;
|
||||
use image::ImageFormat;
|
||||
use ipc_channel::ipc::IpcSharedMemory;
|
||||
use piston_image::ImageFormat;
|
||||
use pixels::PixelFormat;
|
||||
use std::fmt;
|
||||
|
||||
|
@ -50,7 +50,7 @@ pub fn load_from_memory(buffer: &[u8], cors_status: CorsStatus) -> Option<Image>
|
|||
debug!("{}", msg);
|
||||
None
|
||||
},
|
||||
Ok(_) => match piston_image::load_from_memory(buffer) {
|
||||
Ok(_) => match image::load_from_memory(buffer) {
|
||||
Ok(image) => {
|
||||
let mut rgba = image.into_rgba8();
|
||||
pixels::rgba8_byte_swap_colors_inplace(&mut *rgba);
|
||||
|
@ -79,6 +79,8 @@ pub fn detect_image_format(buffer: &[u8]) -> Result<ImageFormat, &str> {
|
|||
Ok(ImageFormat::Jpeg)
|
||||
} else if is_png(buffer) {
|
||||
Ok(ImageFormat::Png)
|
||||
} else if is_webp(buffer) {
|
||||
Ok(ImageFormat::WebP)
|
||||
} else if is_bmp(buffer) {
|
||||
Ok(ImageFormat::Bmp)
|
||||
} else if is_ico(buffer) {
|
||||
|
@ -107,3 +109,7 @@ fn is_bmp(buffer: &[u8]) -> bool {
|
|||
fn is_ico(buffer: &[u8]) -> bool {
|
||||
buffer.starts_with(&[0x00, 0x00, 0x01, 0x00])
|
||||
}
|
||||
|
||||
fn is_webp(buffer: &[u8]) -> bool {
|
||||
buffer.starts_with(b"RIFF") && buffer.len() >= 14 && &buffer[8..14] == b"WEBPVP"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue