我正在尝试在PDF页面中创建和渲染图像。我使用PDEImageCreate API创建PDEImage
对象,然后在PDEContent
的{{1}}中设置此对象。
但是,我无法在页面上呈现正确的图像。我发送原始数据作为输入并使用PDPage
颜色空间。这是我正在使用的代码的快照:
DeviceRGB
我主要有两个问题无法找出原因 -
我试图在mImageDataBuffer中放置随机值,如果在页面上呈现任何内容,它总是黑白的。
如果数据缓冲区的其中一个字节是unsigned char* mImageDataBuffer;
mImageDataBuffer = (unsigned char*)ASmalloc((ASSize_t)30000);
imageAttrs.bitsPerComponent = 8;
imageAttrs.flags = kPDEImageIsMask;
imageAttrs.width = 100;
imageAttrs.height = 100;
imageAttrs.intent = ASAtomNull;
imageMatrix.a = ASFloatToFixed(500.0);
imageMatrix.b = fixedZero;
imageMatrix.c = fixedZero;
imageMatrix.d = ASFloatToFixed(500.0);
imageMatrix.h = fixedZero;
imageMatrix.v = fixedZero;
for (int i = 0; i < 30000;)
{
mImageDataBuffer[i++] = 0x00;
mImageDataBuffer[i++] = 0x00;
mImageDataBuffer[i++] = 0x0f;
}
PDEColorValueP pdeColorValue = (PDEColorValueP)ASmalloc(sizeof(PDEColorValue));
memset(pdeColorValue, 0, sizeof(PDEColorValue));
pdeColorValue->color[0] = FloatToASFixed(255.0f);
pdeColorValue->color[1] = FloatToASFixed(0.0f);
pdeColorValue->color[2] = FloatToASFixed(0.0f);
pdeImage = PDEImageCreate(&imageAttrs, (Uns32)sizeof(imageAttrs), &imageMatrix, 0, PDEColorSpaceCreateFromName(ASAtomFromString("DeviceRGB")),
pdeColorValue, NULL, 0, mImageDataBuffer, 0);
,则如果其余字节不为零,则Acrobat会抛出错误消息。
我确信我错过了一些重要的事情。有人能指出我走向正确的方向吗?
答案 0 :(得分:0)
最后一个参数不应该是mImageDataBuffer
的大小吗?例如:
pdeImage = PDEImageCreate(&imageAttrs, (Uns32)sizeof(imageAttrs), &imageMatrix, 0, PDEColorSpaceCreateFromName(ASAtomFromString("DeviceRGB")),
pdeColorValue, NULL, 0, mImageDataBuffer, 30000);