用C ++从文件中读取图像并传递给Libharu的DrawImage方法

时间:2016-12-08 15:27:32

标签: c++ libharu

我正在使用LibHaru库来生成Pdf报告。在这份报告中,我还要画一幅图像。图像存在于文件中(可以是.jpg,.png,.JPEG)。

如何安全地获取此图像的数据并传递给LibHaru的HPDF_Page_DrawImage(HPDF_Page page, HPDF_Image image, HPDF_REAL x, HPDF_REAL y, HPDF_REAL width, HPDF_REAL height);方法?

PS:我不想使用其他库(如opencv,libpng等)来阅读图片。 LibHaru还提供了两种不同的方法来加载文件中的图像,即HPDF_LoadPngImageFromFile()HPDF_LoadRawImageFromFile(HPDF_Doc pdf, const char *filename, HPDF_UINT width, HPDF_UINT height, HPDF_ColorSpace color_space)HPDF_LoadRawImageFromFile()的缺点是您需要事先知道要加载的图像的widthheight,这在我的情况下是不可能的。

更新:我尝试使用HPDF_Image Image = HPDF_LoadPngImageFromFile(pdf, "E:/images/logo.png");,但这导致VS21010中出现以下链接器错误

LibHaru.lib(hpdf_image_png.obj) : error LNK2019: unresolved external symbol png_set_strip_16 referenced in function LoadPngData

1 个答案:

答案 0 :(得分:0)

在审查了以下示例之后:

https://github.com/libharu/libharu/wiki/Examples

有一个加载图像并获取其数据的示例,我明确地查看了png_demo.c文件,其中包含以下示例:

image = HPDF_LoadPngImageFromFile (pdf, filename1);

/* Draw image to the canvas. */
HPDF_Page_DrawImage (page, image, x, y, HPDF_Image_GetWidth (image),
                HPDF_Image_GetHeight (image));

LibHaru有一整套文档: https://github.com/libharu/libharu/wiki/Installation

HPDF_LoadPngImageFromFile方法返回文件的HPDF_Image,它可能是获取图像指针的最接近的文件,在文档中可以找到有关图像信息的函数,例如宽度,高度,每个组件的位数位于此页面上: https://github.com/libharu/libharu/wiki/API%3A-Image

在没有使用其他库的情况下,这是我能提供的最多。