2013-08-22 212 views
0

我有一個base64編碼數據。例如data:image/png;base64,R0lGODlhIA...,我想用Magick ++將它轉換成PNG。這是我的代碼:如何將base64-encode圖像轉換爲imagemagick中的PNG圖像?

std::string data = "data:image/png;base64,R0lGODlhIA..."; 
std::string output;  //this is the output PNG data 
Magick::Blob input_blob((void*) data.c_str(), data.length()); 
Magick::Image input_image; 
input_image.magick("INLINE"); 
input_image.read(input_blob); 

Magick::Blob output_blob; 
input_image.write(&output_blob, "PNG"); 
output.assign((char*) output_blob.data(), output_blob.length()); 

代碼工作,但是當以base64編碼的數據是非常大的,代碼行input_image.read(input_blob);會崩潰。

誰能告訴我代碼是否正確或如何將base64編碼數據轉換爲magick ++中的PNG?

任何幫助表示讚賞!

回答

2

Inline image format要求超過5000個字符的數據從文件中引用,並且不能直接讀取爲blob數據。

選項:

  • 解析和decode base64數據轉換成二進制團塊,並傳遞到ImageMagick的::圖片
  • 數據寫入temporary file,並使用inline:前綴

實施例:

input_image.read("inline:/path/to/base64.txt"); 
+0

Th謝謝你,我使用第一種方法,它的工作原理。 – jseanj