23 Commits
Author SHA1 Message Date
Kirill Kuzminykh 24f006a404 Fixed the deprecation warning about ImageReader from the image crate. 2025-05-16 16:18:03 +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 15fa98863b Added support for optimization with help of SSE4.1 and AVX2 for the F32 pixel type. 2024-06-19 00:49:57 +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 14cca8b8db Fixed doc-strings and dependencies. 2024-05-13 22:49:13 +03:00
Kirill Kuzminykh 833b25c282 Fixed implementation of vertical convolution for Wasm32 2024-05-04 21:10:15 +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 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 539b8dd400 Updated dependencies. 2023-04-27 01:09:06 +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 11fbe03a8f Wasm simd for u16x1. 2023-01-23 16:46:38 -05:00
Kirill Kuzminykh 788297ce67 Added support of optimisation with helps of NEON SIMD for convolution of U16x3 images. 2022-11-22 23:50:56 +04:00
Kirill Kuzminykh 9320b4b1c4 Added support of optimisation with helps of NEON SIMD for convolution of U8x2 images. 2022-11-12 22:49:24 +04:00
Kirill Kuzminykh 2f88f9df16 - Added method CpuExtensions::is_supported(&self).
- Refactored tests.
- Fixed GitHub Actions for run check and test the crate.
2022-10-29 01:14:08 +04:00
Kirill Kuzminykh ff2837d704 - Added support of optimisation with help of NEON SIMD for convolution of U8x4 images.
- Added optimisation for processing `U8x4` images by `MulDiv` with helps of `NEON SIMD` instructions.
2022-10-19 00:25:14 +04:00
Kirill Kuzminykh e3b64bf7b1 - Trait Pixel renamed into PixelExt and changed.
- All pixel types (`U8`, `U8x2`, ...) replaced by type aliases for new generic structure `Pixel`. Use method `new()` to create instance of one pixel.
- Added module `color` for working with colorspace and gamma.
2022-10-07 20:39:21 +04:00
Kirill Kuzminykh 39f7841030 - Breaking changes:
- Struct `ImageView` replaced by enum `DynamicImageView`.
  - Struct `ImageViewMut` replaced by enum `DynamicImageViewMut`.
  - Trait `Pixel` changed:
    - Associated type `ComponentsCount` renamed into `CountOfComponents`.
    - Associated type `ComponentCountOfValues` renamed into `CountOfComponentValues`.
    - Associated method `components_count` renamed into `count_of_components`.
    - Associated method `component_count_of_values` renamed into `count_of_component_values`.
- Added generic structs `ImageView` and `ImageViewMut`.
- Added module `color` for working with colorspace and gamma.
- Added functions `change_type_of_pixel_components` and
  `change_type_of_pixel_components_dyn` to change type of pixel's
  components in whole image.
- Added generic trait `IntoPixelComponent<Out: PixelComponent>`.

### Example application

- Added option `--high_precision` to use `u16` as pixel components
  for intermediate image representation.
- Added converting of source image into linear colorspace before it will be resized.
  Destination image will be returned into original colorspace before it will be saved.
2022-09-14 00:07:03 +03:00
Kirill Kuzminykh 891312a4bb Added support of new type of pixels PixelType::U16x4. 2022-06-26 19:16:22 +03:00
Kirill Kuzminykh 20d0578306 Added support of new type of pixels PixelType::U16x2 2022-06-22 21:52:47 +03:00
Kirill Kuzminykh d719e2ab75 - Extracted helping code for testing into separate crate.
- Optimized convolution of U16 images with help of AVX2.
2022-05-31 22:58:10 +03:00