SGProcessingManager/include/datasplitter/ImageSplitter.hpp
Namespaces
Classes
Source code
#include <vector>
#include <openssl/evp.h>
#include <cstring>
//#include <libp2p/multi/content_identifier_codec.hpp>
namespace sgns::sgprocessing
{
class ImageSplitter
{
public:
ImageSplitter() = default;
ImageSplitter( const char *filename,
uint64_t blockstride,
uint64_t blocklinestride,
uint64_t blocklen,
int channels );
ImageSplitter( const std::vector<char> &buffer,
uint64_t blockstride,
uint64_t blocklinestride,
uint64_t blocklen,
int channels );
ImageSplitter( const std::vector<uint8_t> &buffer,
uint64_t blockstride,
uint64_t blocklinestride,
uint64_t blocklen,
int channels );
~ImageSplitter()
{
//free(inputImage);
}
std::vector<uint8_t> GetPart( int part );
size_t GetPartByCid( const std::vector<uint8_t> &cid ) const;
uint32_t GetPartSize( int part ) const;
uint32_t GetPartStride( int part ) const;
int GetPartWidthActual( int part ) const;
int GetPartHeightActual( int part ) const;
size_t GetPartCount() const;
size_t GetImageSize() const;
std::vector<uint8_t> GetPartCID( int part ) const;
private:
void SplitImageData();
std::vector<std::vector<uint8_t>> splitparts_;
int partwidth_ = 32;
int partheight_ = 32;
uint64_t blockstride_;
uint64_t blocklinestride_;
uint64_t blocklen_;
int channels_;
const unsigned char *inputImage;
uint64_t imageSize;
std::vector<int> chunkWidthActual_;
std::vector<int> chunkHeightActual_;
std::vector<std::vector<uint8_t>> cids_;
};
}
Updated on 2026-03-04 at 13:10:44 -0800