【发布时间】:2019-06-09 21:48:30
【问题描述】:
我想将 PNG 图像从文件加载到缓冲区,然后加载到 HPDF_Image,但我无法使用 HPDF_LoadPngImageFromMem 从缓冲区获取图像,因为它返回 HPDF_INVALID_PNG_IMAGE。
// Getting size
std::ifstream t("3CM//A_3cm2.png");
t.seekg(0, std::ios::end);
size_t size = t.tellg();
// Filling buffer
std::string buffer(size, ' ');
t.seekg(0);
t.read(&buffer[0], size);
// Loading Image from buffer
HPDF_Image image = HPDF_LoadPngImageFromMem(pdf, (HPDF_BYTE*) buffer.c_str(), buffer.size());
【问题讨论】:
-
而不是
string,您可能希望缓冲区是vector<uint8_t>或只是uint8_t的数组,以避免可能的字符集和编码问题。否则,你正在做的事情的使用和语法看起来没问题。 -
缓冲区是否正确? PNG本身是否正确?我的第一个猜测是将二进制数据读取为 Windows 文本(更改 \n 字符)。还要检查 IO 调用的返回值。
-
您没有检查您的文件操作是否成功。文件 (
"3CM//A_3cm2.png") 是否正确打开?为什么 btw 名称中有双目录分隔符?