Commit Graph
97 Commits
Author SHA1 Message Date
Kirill Kuzminykh 31247ec913 Fixed a deadlock in case of using rayon thread pool with only one thread to resize with ResizeAlg::Nearest algorithm. 2026-06-03 23:40:44 +03:00
Erica Marigold 18a45b7ba4 Make library no_std compatible by gating std use (#59)
* feat: initial `no_std` support attempt

* fix: feature gate some required imports

* fix: unimported `Vec` references in NEON convolution modules
2026-01-07 02:31:31 +03:00
Kirill Kuzminykh e2eaf9046e Added support of some variants of ImageBuffer types form the image crate (#57). 2026-01-03 01:43:03 +03:00
Kirill Kuzminykh 3d66d3b86b - Revert updating image crate. 2025-11-29 00:02:46 +03:00
Kirill Kuzminykh 201351d686 - Updated versions of dependencies.
- Added test for creating TypedImage from slice with using `bytemuck`.
2025-11-28 00:44:25 +03:00
Kirill Kuzminykh 3ded33eefe Prepare to release. 2025-07-12 02:13:21 +03:00
Kirill Kuzminykh 6431b4d797 Fixed dividing image by alpha channel for images with U16x2 pixels. 2025-05-16 00:13:09 +03:00
Kirill Kuzminykh babe8c4c55 Replaced the internal crate testing on the corresponding module in the tests directory (#48). 2025-04-07 00:41:22 +03:00
Kirill Kuzminykh f4e15602fe Fixed error in NEON implementation of MulDiv::multiply_alpha() and MulDiv::multiply_alpha_inplace() for U8x2 pixels (#49). 2025-04-07 00:13:18 +03:00
Kirill Kuzminykh 0666a2323b Fixed error in implementation of ImageView::split_by_width(), ImageView::split_by_height(), ImageViewMut::split_by_width_mut() and ImageViewMut::split_by_height_mut()(#46). 2025-02-16 20:32:25 +03:00
Kirill Kuzminykh 1c1cee51d6 Fixed TypedImageRef::split_by_height() (#43). 2025-01-13 23:45:46 +03:00
Kirill Kuzminykh 74ab1beeee Fixed error in implementation of ImageView::split_by_width(), ImageView::split_by_height(), ImageViewMut::split_by_width_mut() and ImageViewMut::split_by_height_mut()(#43). 2025-01-12 16:54:10 +03:00
Kirill Kuzminykh faa65e30bb Improved speed (about 9%) of SSE4.1 implementation for vertical convolution pass for pixel types based on u8 components. 2024-10-20 00:02:25 +03:00
Kirill Kuzminykh 75450229c4 Added support for multi-thread image processing with the help of rayon crate. 2024-10-03 20:24:00 +03:00
Kirill Kuzminykh 79a3a73afb - Updated dependencies.
- Optimized convolution algorythm by deleting zero coefficients from start and end of bounds.
2024-10-03 20:24:00 +03:00
Kirill Kuzminykh db42291da9 Prepare to release. 2024-07-19 21:12:26 +03:00
Kirill Kuzminykh 49bad1bed0 Added new resize algorythm ResizeAlg::Interpolation (#32). 2024-07-18 23:33:17 +03:00
Kirill Kuzminykh f1bf0bb51a Added support for optimization with help of SSE4.1 and AVX2 to multiple and divide by alpha channel for the F32x4 pixel type (#30). 2024-07-01 23:43:59 +03:00
Kirill Kuzminykh 5e450afe04 Added basic support for the new pixel type PixelType::F32x4 (#30). 2024-06-18 23:20:13 +03:00
Kirill Kuzminykh 91c28d4539 Added basic support for the new pixel type PixelType::F32x3 (#30). 2024-06-18 02:10:49 +03:00
Kirill Kuzminykh ad2610b91e Added support for the new pixel type PixelType::F32x2 with optimizations for SSE4.1 and AVX2 (#30). 2024-06-18 01:16:32 +03:00
Kirill Kuzminykh f87f80e925 Fixed implementation of TypedCroppedImage, TypedCroppedImageMut, CroppedImage and CroppedImageMut. 2024-05-13 21:08:42 +03:00
Kirill Kuzminykh ee2ec47e3c - Renamed CroppedImage into TypedCroppedImage.
- Renamed `CroppedImageMut` into `TypedCroppedImageMut`.
2024-05-07 00:10:14 +03:00
Kirill Kuzminykh 568af7f889 - Renamed TypedImage into TypedImageRef.
- Renamed `TypedImageMut` into `TypedImage`.
2024-05-06 22:36:05 +03:00
Kirill Kuzminykh 7c90712891 - Added checking images size for equal to zero in MulDiv 2024-05-02 22:15:12 +03:00
Kirill Kuzminykh 2bc54792f2 - Added Gaussian filter for convolution algorithm.
- Added field `algorithm` into `ResizeOptions`.
- Argument `resize_alg` was removed from `Resizer::new()` method, use `options` argument of methods to resize instead.
2024-05-02 21:41:41 +03:00
Kirill Kuzminykh 8af42a2cf7 - Added ImageRef structure.
- Added example of code with differences between v3.x and v4.x.
2024-04-24 00:37:39 +03:00
Kirill Kuzminykh f6bf9bbaad Added Gaussian filter for convolution algorythm. 2024-04-21 21:50:39 +03:00
Kirill Kuzminykh 9b9766f146 Fixed dividing image by alpha channel. 2024-04-18 00:45:49 +03:00
Kirill Kuzminykh d90d235fb2 A lot of changes to replace ImageView and ImageViewMut structures on traits with the same names. 2024-04-10 23:38:46 +03:00
Kirill Kuzminykh 8223af2564 Fixed error with incorrect cropping of source image. 2024-02-15 21:04:44 +03:00
Kirill Kuzminykh 3ee194273a Fixed type of func argument of Filter::new() method. 2024-02-07 21:18:13 +03:00
Kirill Kuzminykh ed70607f2b **BREAKING**: Added a new variant of enum CropBoxError::WidthOrHeightLessOrEqualToZero. 2024-02-05 01:22:02 +03:00
Kirill Kuzminykh 19d526af74 - **BREAKING**: The type of the CropBox fields has been changed to f64. Now you can use
fractional size and position of crop box.
- **BREAKING**: The type of `centering` argument of `ImageView::set_crop_box_to_fit_dst_size()`
  and `DynamicImageView::set_crop_box_to_fit_dst_size()` methods has been changed to `Optional<(f64, f64)>`.
- **BREAKING**: The `crop_box` argument of `ImageViewMut::crop()` and `DynamicImageViewMut::crop()`
  methods has been replaced with separate `left`, `top`, `width` and `height` arguments.
2024-02-04 22:51:35 +03:00
Kirill Kuzminykh f6d843891d Added Custom variant for FilterType enum and corresponding Filter structure. 2023-12-30 13:55:41 +03:00
Kirill Kuzminykh c195c4ff43 - Significantly improved (4.5 times on x86_64) speed of vertical convolution pass implemented
in native Rust for `U8`, `U8x2`, `U8x3` and `U8x4` images.
- Changed order of convolution passes for `U8`, `U8x2`, `U8x3` and `U8x4` images.
  Now the vertical pass is the first and the horizontal pass is the second.
- **BREAKING**: Changed internal data type for `U8x4` structure. Not it is `[u8; 4]` instead of `u32`.
2023-12-14 22:45:26 +03:00
Kirill Kuzminykh 63f6b517ab Added feature only_u8x4 that can be used to experiment with the crate's code. 2023-12-05 21:55:45 +03:00
Kirill Kuzminykh fd071fd0cc - Added method DynamicImageViewMut::crop() to create cropped version of ImageViewMut.
- Added method `ImageViewMut::crop()` to create cropped version of `ImageViewMut`.
2023-03-24 23:40:25 +03:00
Kirill Kuzminykh 999c684fce Slightly improved speed of Convolution implementation for U8x2 images and Wasm32 SIMD128 instructions. 2023-02-21 00:09:21 +03:00
Kirill Kuzminykh 76a87bc305 - CpuExtension::Wasm32 renamed into CpuExtension::Simd128.
- Optimized MulDiv implementation for Wasm32 SIMD128.
2023-01-29 00:43:25 +04:00
Colin 14e0a15d40 All tests working. 2023-01-23 16:46:54 -05:00
Colin d5055fee0b alpha u8x4 passing 2023-01-23 16:46:42 -05:00
Colin a71337a5c1 Alpha u8x2 working. 2023-01-23 16:46:42 -05:00
Colin a8e33d213c Resize Complete 2023-01-23 16:46:42 -05:00
Colin 9b15dcbc71 U8 complete. 2023-01-23 16:46:42 -05:00
Colin f0979ec3b9 Working vertical u16 2023-01-23 16:46:42 -05:00
Colin 11fbe03a8f Wasm simd for u16x1. 2023-01-23 16:46:38 -05:00
Kirill Kuzminykh 5c8477b344 - Improved speed of MulDiv implementation for U16x2 images.
- Added optimisation for processing `U16x2` images by `MulDiv` with helps of `NEON SIMD` instructions.
2022-12-11 17:28:26 +04:00
Kirill Kuzminykh b6e36cbd86 Excluded possibility of unnecessary operations during resize of cropped image by convolution algorithm. 2022-12-06 00:51:48 +04:00
Kirill Kuzminykh 057c0bcf75 Fixed tests. 2022-11-11 23:15:06 +04:00