- Added using of (read|write)_unaligned for unaligned pointers
on
arm64
andwasm32
architectures. (#15).
- Added using of (read|write)_unaligned for unaligned pointers on
x86_64
architecture. (#16).
- Added method
DynamicImageViewMut::crop()
to create cropped version ofDynamicImageViewMut
(#13). - Added method
ImageViewMut::crop()
to create cropped version ofImageViewMut
.
- Slightly improved speed of
Convolution
implementation forU8x2
images andWasm32 SIMD128
instructions. - Method
Image::buffer_mut()
was made public (#14)
- Added support of optimisation with helps of
Wasm32 SIMD128
for all types of images excludeI32
andF32
(thanks to @cdmurph32, #11).
- Benchmark framework
glassbench
replaced bycriterion
. - Added report with results of benchmarks for
wasm32-wasi
target.
- Slightly improved speed of
MulDiv
implementation forU8x2
,U8x4
,U16x2
andU16x4
images. - Added optimisation for processing
U16x2
images byMulDiv
with helps ofNEON SIMD
instructions. - Excluded possibility of unnecessary operations during resize of cropped image by convolution algorithm.
- Added implementation
From
trait to convertImageViewMut
intoImageView
. - Added implementation
From
trait to convertDynamicImageViewMut
intoDynamicImageView
.
- Added support of optimisation with helps of
NEON SIMD
for convolution ofU16
images. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU16x2
images. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU16x3
images. - Improved optimisation of convolution with helps of
NEON SIMD
forU8
images.
- Added support of optimisation with helps of
NEON SIMD
for convolution ofU8
images. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU8x2
images. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU8x3
images. - Added optimisation for processing
U8x2
images byMulDiv
with helps ofNEON SIMD
instructions.
- Added method
CpuExtensions::is_supported(&self)
. - Internals of
PixelComponentMapper
changed to use heap to store its data. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU16x4
images. - Added optimisation for processing
U16x4
images byMulDiv
with helps ofNEON SIMD
instructions. - Added full optimisation for convolution of
U8
images with helps ofSSE4.1
instructions. - Fixed link to documentation page in
README.md
file. - Fixed error in implementation of
MulDiv::divide_alpha()
andMulDiv::divide_alpha_inplace()
forU16x4
pixels with optimisation with helps ofSSE4.1
andAVX2
. - Improved optimisation of
MulDiv
with helps ofNEON SIMD
forU8x4
pixels.
- Breaking changes:
- Struct
ImageView
replaced by enumDynamicImageView
. - Struct
ImageViewMut
replaced by enumDynamicImageViewMut
. - Trait
Pixel
renamed intoPixelExt
and some its internals changed:- associated type
ComponentsCount
renamed intoCountOfComponents
. - associated type
ComponentCountOfValues
deleted. - associated method
components_count
renamed intocount_of_components
. - associated method
component_count_of_values
renamed intocount_of_component_values
.
- associated type
- All pixel types (
U8
,U8x2
, ...) replaced by type aliases for new generic structurePixel
. Use methodnew()
to create instance of one pixel.
- Struct
- Added structure
PixelComponentMapper
that holds tables for mapping values of pixel's components in forward and backward directions. - Added function
create_gamma_22_mapper()
to create instance ofPixelComponentMapper
that converts images with gamma 2.2 to linear colorspace and back. - Added function
create_srgb_mapper()
to create instance ofPixelComponentMapper
that converts images from SRGB colorspace to linear RGB and back. - Added generic structs
ImageView
andImageViewMut
. - Added functions
change_type_of_pixel_components
andchange_type_of_pixel_components_dyn
that change type of pixel's components in whole image. - Added generic trait
IntoPixelComponent<Out: PixelComponent>
. - Added generic structure
Pixel
for create all types of pixels. - Added full support of optimisation with helps of
SSE4.1
for convolution ofU8x3
images. - Added support of optimisation with helps of
NEON SIMD
for convolution ofU8x4
images. - Added optimisation for processing
U8x4
images byMulDiv
with helps ofNEON SIMD
instructions.
- Added option
--high_precision
to useu16
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.
- Added example of command line application "resizer".
- Fixed resizing when the destination image has the same dimensions as the source image (#9).
- Added support of new type of pixels
PixelType::U16x4
. - Fixed benchmarks for resizing images with alpha channel using
the
resizer
crate. - Removed
image
crate from benchmarks for resizing images with alpha. - Added method
Image::copy(&self) -> Image<'static>
.
- Fixed README.md
- Added support of new type of pixels
PixelType::U16x2
(e.g. luma with alpha channel).
- Added support of new type of pixels
PixelType::U16
.
- Added optimisation for convolution of
U8x2
images with helps ofSSE4.1
.
- Added optimisation for processing
U8x2
images byMulDiv
with helps ofSSE4.1
andAVX2
instructions. - Added optimisation for convolution of
U16x2
images with helps ofAVX2
instructions.
- Added support of new type of pixels
PixelType::U8x2
. - Added into
MulDiv
support of images with pixel typeU8x2
. - Added method
Image::into_vec(self) -> Vec<u8>
(#7).
- Added optimisation for convolution of U16x3 images with helps of
SSE4.1
andAVX2
instructions. - Added partial optimisation for convolution of U8 images with helps of
SSE4.1
instructions. - Allowed to create an instance of
Image
,ImageVew
andImageViewMut
from a buffer larger than necessary (#5). - Breaking changes:
- Removed methods:
Image::from_vec_u32()
,Image::from_slice_u32()
. - Removed error
InvalidBufferSizeError
.
- Removed methods:
- Added support of new type of pixels
PixelType::U16x3
. - Breaking changes:
- Added variant
U16x3
into the enumPixelType
.
- Added variant
- Added optimisation of multiplying and dividing image by alpha channel with helps
of
SSE4.1
instructions. - Improved performance of dividing image by alpha channel without forced SIMD instructions.
- Breaking changes:
- Deleted variant
SSE2
from enumCpuExtensions
.
- Deleted variant
- Added optimisation of convolution U8x3 images with helps of
AVX2
instructions. - Fixed error in code for convolution U8x4 images with helps of
SSE4.1
instructions. - Fixed error in code for convolution U8 images with helps of
AVX2
instructions.
- Fixed compile errors on non-x86 architectures.
- Fixed compile errors on non-x86 architectures.
- Added support of new type of pixels
PixelType::U8x3
(with auto-vectorization for SSE4.1). - Exposed module
fast_image_resize::pixels
with typesU8x3
,U8x4
,F32
,I32
,U8
used as wrappers for represent type of one pixel of image. - Some optimisations in code of convolution written in Rust (without intrinsics for SIMD).
- Breaking changes:
- Added variant
U8x3
into the enumPixelType
. - Changed internal tuple structures inside of variant of
ImageRows
andImageRowsMut
enums.
- Added variant
- Added optimisation of convolution grayscale images (U8) with helps of
AVX2
instructions.
- Added support of new type of pixels
PixelType::U8
(without forced SIMD). - Breaking changes:
ImageData
renamed intoImage
.SrcImageView
andDstImageView
replaced byImageView
andImageViewMut
.- Method
Resizer.resize()
now returnsResult<(), DifferentTypesOfPixelsError>
.
- Added support of compilation for architectures other than x86_64.
- Added method
SrcImageView.set_crop_box_to_fit_dst_size()
. - Fixed out-of-bounds error during resize with cropping.
- Refactored
ImageData
.- Added methods:
from_vec_u32()
,from_vec_u8()
,from_slice_u32()
,from_slice_u8()
. - Removed methods:
from_buffer()
,from_pixels()
.
- Added methods:
- Fixed typo in name of CatmullRom filter type.