mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(media-proxy): serve originals and speed up slow transforms (#3393)
This commit is contained in:
1 parent
44bc29b101
commit
aa3b058ce6
29 files changed
+632
-83
No files matched your search
@@ -4,12 +4,13 @@ use super::super::image_probe::load_image;
|
||||
use super::super::native_runtime::ensure_vips_init;
|
||||
use super::super::transform::source_supports_pages;
|
||||
use super::super::{ImageOptions, MediaError, NativeCost, image_transform_cost};
|
||||
use super::fixtures::{animated_mode, metadata_value, transform_image};
|
||||
use super::fixtures::{animated_mode, metadata_value, png_zlib_level, transform_image};
|
||||
use crate::{
|
||||
mime, native,
|
||||
output_format::OutputFormat,
|
||||
test_fixtures::{
|
||||
JXL_64_LOSSY_ALPHA, JXL_4100_LOSSY_ALPHA, png_dimensions, synthetic_bmp, synthetic_png,
|
||||
JPEG_ROTATED_MISMATCHED_SCAN, JXL_64_LOSSY_ALPHA, JXL_4100_LOSSY_ALPHA, png_dimensions,
|
||||
synthetic_bmp, synthetic_png,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -118,7 +119,7 @@ fn refuses_jxl_above_the_decode_pixel_cap_before_decoding() {
|
||||
},
|
||||
)
|
||||
.unwrap_err();
|
||||
assert_eq!(MediaError::InvalidImageDimensions, err);
|
||||
assert_eq!(MediaError::TooLargeToProcess, err);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +148,7 @@ fn refuses_full_size_svg_raster_above_the_static_output_cap() {
|
||||
},
|
||||
)
|
||||
.unwrap_err();
|
||||
assert_eq!(MediaError::InvalidImageDimensions, err);
|
||||
assert_eq!(MediaError::TooLargeToProcess, err);
|
||||
let err = transform_image(
|
||||
svg,
|
||||
&ImageOptions {
|
||||
@@ -157,7 +158,7 @@ fn refuses_full_size_svg_raster_above_the_static_output_cap() {
|
||||
},
|
||||
)
|
||||
.unwrap_err();
|
||||
assert_eq!(MediaError::InvalidImageDimensions, err);
|
||||
assert_eq!(MediaError::TooLargeToProcess, err);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -213,3 +214,29 @@ fn transform_cost_charges_svg_at_its_output_size() {
|
||||
};
|
||||
assert!(cost < 1 << 20, "cost {cost}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn transforms_a_rotated_jpeg_with_mismatched_scan_headers_at_full_size() {
|
||||
let out = transform_image(
|
||||
JPEG_ROTATED_MISMATCHED_SCAN,
|
||||
&ImageOptions {
|
||||
format: OutputFormat::PNG,
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(Some((768, 1024)), png_dimensions(&out.bytes));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn png_outputs_above_a_megapixel_use_default_zlib_compression() {
|
||||
let png_options = ImageOptions {
|
||||
format: OutputFormat::PNG,
|
||||
..Default::default()
|
||||
};
|
||||
let small = transform_image(&synthetic_bmp(160, 160), &png_options).unwrap();
|
||||
assert_eq!(Some(3), png_zlib_level(&small.bytes));
|
||||
let large = transform_image(&synthetic_bmp(1100, 1000), &png_options).unwrap();
|
||||
assert_eq!(Some((1100, 1000)), png_dimensions(&large.bytes));
|
||||
assert_eq!(Some(2), png_zlib_level(&large.bytes));
|
||||
}
|
||||
Reference in new issue
Block a user