在C++中从流缓冲区初始化 Magick++
Initialize Magick++ from stream buffer in C++
我似乎找不到从 iostream stream_buffer初始化 ImageMagick Magick++ 对象的正确语法/方法的示例C++。
我正在尝试使用来自 aws sdk getObject 的结果,它似乎返回了一个流缓冲区以推送到 ImageMagick 中以按需通过 lambda 创建缩略图。
我用于检索对象的 aws-sdk-cpp 中的相关代码示例:
auto get_object_outcome = s3_client.GetObject(object_request);
if (get_object_outcome.IsSuccess())
{
// Get an Aws::IOStream reference to the retrieved file
auto &retrieved_file = get_object_outcome.GetResultWithOwnership().GetBody();
// read the object's contents and write to a file
std::ofstream output_file(file_name, std::ios::binary);
output_file << retrieved_file.rdbuf();
return true;
}
else
{
auto error = get_object_outcome.GetError();
std::cout << "ERROR: " << error.GetExceptionName() << ": "
<< error.GetMessage() << std::endl;
return false;
}
感谢任何帮助 - c++ 的新手,所以我还没有精通转换更高级的数据格式,如流/blob/缓冲区。
我尝试获取您的retrieved_file,将其复制到 std::vector 中,创建一个神奇的 blob,从 blob 创建一个图像:
// create an empty buffer
std::vector<char> buffer;
// file your buffer with the retrieved file
std::copy(istream_iterator(retrieved_file), istream_iterator(), std::back_inserter(buffer));
// create a Magick++ blob with your data
Blob my_blob(buffer.data(), buffer.size());
// create a Magick++ image from your blob
Image image_from_blob(my_blob);
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 在C++中从流缓冲区初始化 Magick++
- 缓冲区已使用,但可能尚未初始化(在 Visual Studio 中)
- 使用大长度缓冲区初始化字符串流是否会使内存使用量加倍
- 从二进制缓冲区初始化变量的正确方法是什么
- 如何在协议缓冲区中初始化排序和过滤重复的元素
- 初始化的std ::阵列从指针优雅地变成缓冲区
- 我需要可复制的缓冲区,尽可能轻(例如,不初始化零)
- 如何初始化指向输出缓冲区长度的指针
- 协议缓冲区初始化期间崩溃
- 是初始化的静态char[]缓冲区
- 如何初始化协议缓冲区中的重复元素
- 字符缓冲区初始化的标准行为
- 用变量初始化缓冲区数组的长度
- 如何初始化管理在实例化时传递数据类型的缓冲区的类
- 使用 vector<char> 作为缓冲区而不在 resize() 上初始化它