2010-03-12 70 views
0

我已經下載了DLL對ImageMagick的,我想知道是否有人的一些示例代碼知道完成一個簡單的任務:轉換圖像緩衝區與ImageMagick的PDF在C++

我在C生成的圖像++,並有RGB格式的緩衝區。在通過TCP套接字發送之前,我需要將其轉換爲PDF格式(無需寫入文件)。

這是可以與ImageMagick(或任何其他庫)嗎?

回答

3

假設您使用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上會引起麻煩,除非你的輸出流轉換爲二進制模式。上面的代碼只是一個簡短的例子,所以我忽略了這一點。

相關問題