0
我已經下載了DLL對ImageMagick的,我想知道是否有人的一些示例代碼知道完成一個簡單的任務:轉換圖像緩衝區與ImageMagick的PDF在C++
我在C生成的圖像++,並有RGB格式的緩衝區。在通過TCP套接字發送之前,我需要將其轉換爲PDF格式(無需寫入文件)。
這是可以與ImageMagick(或任何其他庫)嗎?
我已經下載了DLL對ImageMagick的,我想知道是否有人的一些示例代碼知道完成一個簡單的任務:轉換圖像緩衝區與ImageMagick的PDF在C++
我在C生成的圖像++,並有RGB格式的緩衝區。在通過TCP套接字發送之前,我需要將其轉換爲PDF格式(無需寫入文件)。
這是可以與ImageMagick(或任何其他庫)嗎?
假設您使用Magick ++ Magick::Image
有一個構造函數,可以從內存中的blob和write()方法創建一個圖像,該方法可以將一個PDF(以及一堆其他格式)寫入一個in-memoy blob以及。
請注意,在我的Linux機器上ImageMagick似乎在操作過程中創建了一些臨時文件。我不確定這是否符合您的要求,但它可能是可配置的。
你或許可以從中得到的代碼片段是一個好主意:
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
static char imageData[] = {
/* ... */
};
int main(int argc, char** argv)
{
/* Initialize the library */
InitializeMagick(*argv);
/* Instantiate an image from RGB data */
Image image(4, // Width
14, // Height
"RGB", // Color components ordering
CharPixel, // Components storage type
imageData);// Image data
/* Write pdf in memory */
Blob b;
image.write(&b, string("pdf"));
/* write pdf data to cout */
/* it should be easy to send it over a socket instead */
cout.write(static_cast<const char*>(b.data()), b.length());
return 0;
}
編輯:我也許應該補充的是二進制數據寫入cout
在Windows上會引起麻煩,除非你的輸出流轉換爲二進制模式。上面的代碼只是一個簡短的例子,所以我忽略了這一點。