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