Skip to content

Commit 00408ac

Browse files
committed
feat: ImageBuffer 支持传入 encoded
1 parent 88b215e commit 00408ac

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

include/MaaUtils/Buffer/BufferTypes.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ struct MaaStringBuffer
2222
virtual void set(std::string str) = 0;
2323
};
2424

25+
using ImageEncodedBuffer = std::vector<uint8_t>;
26+
2527
struct MaaImageBuffer
2628
{
2729
public:
@@ -42,4 +44,5 @@ struct MaaImageBuffer
4244
virtual const cv::Mat& get() const = 0;
4345

4446
virtual void set(cv::Mat image) = 0;
47+
virtual void set(ImageEncodedBuffer buffer) = 0;
4548
};

include/MaaUtils/Buffer/ImageBuffer.hpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22

33
#include "BufferTypes.hpp"
4-
#include "MaaUtils/Conf.h"
54
#include "ListBuffer.hpp"
5+
#include "MaaUtils/Conf.h"
66

77
MAA_SUPPRESS_CV_WARNINGS_BEGIN
88
#include <opencv2/core/mat.hpp>
@@ -21,6 +21,8 @@ class ImageBuffer : public MaaImageBuffer
2121
{
2222
}
2323

24+
ImageBuffer(ImageEncodedBuffer buffer) { from_encoded(std::move(buffer)); }
25+
2426
virtual ~ImageBuffer() override = default;
2527

2628
virtual bool empty() const override { return image_.empty(); }
@@ -61,7 +63,16 @@ class ImageBuffer : public MaaImageBuffer
6163
image_ = image.clone();
6264
}
6365

66+
virtual void set(ImageEncodedBuffer buffer) override { from_encoded(std::move(buffer)); }
67+
6468
private:
69+
void from_encoded(ImageEncodedBuffer buffer)
70+
{
71+
image_ = cv::imdecode(buffer, cv::IMREAD_COLOR);
72+
encoded_cache_ = std::move(buffer);
73+
dirty_ = false;
74+
}
75+
6576
void encode() const
6677
{
6778
if (!dirty_) {
@@ -79,7 +90,7 @@ class ImageBuffer : public MaaImageBuffer
7990

8091
cv::Mat image_;
8192
mutable bool dirty_ = true;
82-
mutable std::vector<uint8_t> encoded_cache_;
93+
mutable ImageEncodedBuffer encoded_cache_;
8394
};
8495

8596
MAA_NS_END

0 commit comments

Comments
 (0)