diff --git a/docs/2026.html b/docs/2026.html
index 85babbad78..6c298e28b6 100644
--- a/docs/2026.html
+++ b/docs/2026.html
@@ -77,6 +77,7 @@
New features
SVE2 optimizations of class ImagePgmBinSaver.
SVE2 optimizations of class ImagePpmTxtSaver.
SVE2 optimizations of class ImagePpmBinSaver.
+ SVE2 optimizations of class ImageBmpSaver.
C++ wrapper Simd::SynetAdd16b.
C++ wrapper Simd::SynetQuantizedAdd.
C++ wrapper Simd::SynetQuantizedMul.
diff --git a/src/Simd/SimdImageSave.h b/src/Simd/SimdImageSave.h
index d1faf8a6fc..e327f1f3ea 100644
--- a/src/Simd/SimdImageSave.h
+++ b/src/Simd/SimdImageSave.h
@@ -519,6 +519,12 @@ namespace Simd
ImagePpmBinSaver(const ImageSaverParam& param);
};
+ class ImageBmpSaver : public Neon::ImageBmpSaver
+ {
+ public:
+ ImageBmpSaver(const ImageSaverParam& param);
+ };
+
//-------------------------------------------------------------------------------------------------
uint8_t* ImageSaveToMemory(const uint8_t* src, size_t stride, size_t width, size_t height, SimdPixelFormatType format, SimdImageFileType file, int quality, size_t* size);
diff --git a/src/Simd/SimdSve2ImageSave.cpp b/src/Simd/SimdSve2ImageSave.cpp
index b0a8fae1bd..a6dbf0b21f 100644
--- a/src/Simd/SimdSve2ImageSave.cpp
+++ b/src/Simd/SimdSve2ImageSave.cpp
@@ -100,6 +100,20 @@ namespace Simd
//-------------------------------------------------------------------------------------------------
+ ImageBmpSaver::ImageBmpSaver(const ImageSaverParam& param)
+ : Neon::ImageBmpSaver(param)
+ {
+ switch (_param.format)
+ {
+ case SimdPixelFormatGray8: _convert = NULL; break;
+ case SimdPixelFormatRgb24: _convert = Sve2::BgrToRgb; break;
+ case SimdPixelFormatRgba32: _convert = Sve2::BgraToRgba; break;
+ default: break;
+ }
+ }
+
+ //-------------------------------------------------------------------------------------------------
+
ImageSaver* CreateImageSaver(const ImageSaverParam& param)
{
switch (param.file)
@@ -110,7 +124,7 @@ namespace Simd
case SimdImageFilePpmBin: return new ImagePpmBinSaver(param);
case SimdImageFilePng: return new Neon::ImagePngSaver(param);
case SimdImageFileJpeg: return new Neon::ImageJpegSaver(param);
- case SimdImageFileBmp: return new Neon::ImageBmpSaver(param);
+ case SimdImageFileBmp: return new ImageBmpSaver(param);
default:
return NULL;
}