簡體   English   中英

從C ++中的流緩沖區初始化Magick ++

[英]Initialize Magick++ from stream buffer in C++

我似乎找不到用於從C ++中的iostream stream_buffer初始化ImageMagick Magick ++對象的正確語法/方法的示例。

我正在嘗試使用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 /緩沖區。

我嘗試將您的restored_file拷貝到std :: vector中,創建magick 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM