This commit is contained in:
michael
2026-01-17 02:49:32 +01:00
parent a1ccda2e88
commit 4905663933
283 changed files with 32074 additions and 15759 deletions

View File

@@ -3,16 +3,17 @@
#ifndef CIMAGEBASIS_H
#define CIMAGEBASIS_H
#include <stdint.h>
#include "defines.h"
#include <string>
#include <esp_http_server.h>
#include "../../include/defines.h"
#include <math.h>
#include <stdint.h>
#include <esp_http_server.h>
#include "../stb/stb_image.h"
#include "../stb/stb_image_write.h"
// #include "../stb/deprecated/stb_image_resize.h"
#include "../stb/stb_image_resize.h"
#include "esp_heap_caps.h"
@@ -23,74 +24,69 @@ struct ImageData
size_t size = 0;
};
class CImageBasis
{
protected:
bool externalImage;
std::string filename;
std::string name; // Just used for diagnostics
int memsize = 0;
protected:
bool externalImage;
std::string filename;
std::string name; // Just used for diagnostics
int memsize = 0;
void memCopy(uint8_t* _source, uint8_t* _target, int _size);
bool isInImage(int x, int y);
void memCopy(uint8_t *_source, uint8_t *_target, int _size);
bool isInImage(int x, int y);
bool islocked;
bool islocked;
public:
uint8_t* rgb_image = NULL;
int channels;
int width, height, bpp;
public:
uint8_t *rgb_image = NULL;
int channels;
int width, height, bpp;
uint8_t * RGBImageLock(int _waitmaxsec = 60);
void RGBImageRelease();
uint8_t * RGBImageGet();
uint8_t *RGBImageLock(int _waitmaxsec = 60);
void RGBImageRelease();
uint8_t *RGBImageGet();
int getWidth(){return this->width;};
int getHeight(){return this->height;};
int getChannels(){return this->channels;};
void drawRect(int x, int y, int dx, int dy, int r = 255, int g = 255, int b = 255, int thickness = 1);
void drawLine(int x1, int y1, int x2, int y2, int r, int g, int b, int thickness = 1);
void drawCircle(int x1, int y1, int rad, int r, int g, int b, int thickness = 1);
void drawEllipse(int x1, int y1, int radx, int rady, int r, int g, int b, int thickness = 1);
int getWidth() { return this->width; };
int getHeight() { return this->height; };
int getChannels() { return this->channels; };
void drawRect(int x, int y, int dx, int dy, int r = 255, int g = 255, int b = 255, int thickness = 1);
void drawLine(int x1, int y1, int x2, int y2, int r, int g, int b, int thickness = 1);
void drawCircle(int x1, int y1, int rad, int r, int g, int b, int thickness = 1);
void drawEllipse(int x1, int y1, int radx, int rady, int r, int g, int b, int thickness = 1);
void setPixelColor(int x, int y, int r, int g, int b);
void Negative(void);
void Contrast(float _contrast);
bool ImageOkay();
bool CopyFromMemory(uint8_t* _source, int _size);
void setPixelColor(int x, int y, int r, int g, int b);
void Negative(void);
void Contrast(float _contrast);
bool ImageOkay();
bool CopyFromMemory(uint8_t *_source, int _size);
void SetIndepended(){externalImage = false;};
void SetIndepended() { externalImage = false; };
void CreateEmptyImage(int _width, int _height, int _channels);
void EmptyImage();
void CreateEmptyImage(int _width, int _height, int _channels);
void EmptyImage();
CImageBasis(std::string name);
CImageBasis(std::string name, std::string _image);
CImageBasis(std::string name, uint8_t *_rgb_image, int _channels, int _width, int _height, int _bpp);
CImageBasis(std::string name, int _width, int _height, int _channels);
CImageBasis(std::string name, CImageBasis *_copyfrom);
CImageBasis(std::string name);
CImageBasis(std::string name, std::string _image);
CImageBasis(std::string name, uint8_t* _rgb_image, int _channels, int _width, int _height, int _bpp);
CImageBasis(std::string name, int _width, int _height, int _channels);
CImageBasis(std::string name, CImageBasis *_copyfrom);
void Resize(int _new_dx, int _new_dy);
void Resize(int _new_dx, int _new_dy, CImageBasis *_target);
void crop_image(unsigned short cropLeft, unsigned short cropRight, unsigned short cropTop, unsigned short cropBottom);
void Resize(int _new_dx, int _new_dy);
void Resize(int _new_dx, int _new_dy, CImageBasis *_target);
void crop_image(unsigned short cropLeft, unsigned short cropRight, unsigned short cropTop, unsigned short cropBottom);
void LoadFromMemory(stbi_uc *_buffer, int len);
void LoadFromMemory(stbi_uc *_buffer, int len);
ImageData *writeToMemoryAsJPG(const int quality = 90);
void writeToMemoryAsJPG(ImageData *ii, const int quality = 90);
ImageData* writeToMemoryAsJPG(const int quality = 90);
void writeToMemoryAsJPG(ImageData* ii, const int quality = 90);
esp_err_t SendJPGtoHTTP(httpd_req_t *req, const int quality = 90);
esp_err_t SendJPGtoHTTP(httpd_req_t *req, const int quality = 90);
uint8_t GetPixelColor(int x, int y, int ch);
uint8_t GetPixelColor(int x, int y, int ch);
~CImageBasis();
~CImageBasis();
void SaveToFile(std::string _imageout);
void SaveToFile(std::string _imageout);
};
#endif //CIMAGEBASIS_H
#endif // CIMAGEBASIS_H