我有一个C#程序使用P/Invoke调用现有的C图像库DLL。调用Native方法时的最大缓冲区大小
是否有可能缓冲区的大小是有限的,可以有效地编组?
我打电话的功能,我传递一个指向INPUTBUFFER,它的大小和OutputBuffer中是这样的:
cmsDoTransform(xform, inputBitmapBytesRGB, outputBitmapBytesCMYK, TotalPixels);
虽然这段代码尝试,我不停地接收MemoryAccessViolation错误?
因此,我开始使用尺寸为1x1像素,2x2,4x4,8x8,16x16高达64x64的非常小的RGB图像,并且一切正常,突然间,没有更多的错误消息。不能更快乐。
有信心,我回到了原来的364x288像素RGB测试图像。那没有用?返回MemoryAccessViolations?
因此,我将图像大小从364x288缩小到288x288,直到它以128x128“通过”,最终导致图像大小为49,512字节。
因此,上述函数调用中的TotalPixels参数变成了128x128或16,384。它似乎是关于.NET编组将作为缓冲区大小接受的“最大”数量?那有意义吗?
在.NET中,有没有一个上限,我不能在我正在做的卑微的图像处理中进行上述操作?
确保byte []的索引是ulong而不是整数。 – jdweng