0

我有两个 IntPtr 到两个不同的浮动图像(source.IP 和destination.IP)。

我将一块像素从一个图像复制到另一个图像。

int j = 0;
for (int y0 = y; y0 < h + y; y0++)
{
    float* s = ((float*)source.IP) + (y0 * sourcewidth) + x;
    float* d = ((float*)destination.IP) + ((ydestination + j) * destinationwidth) + xdestination;

    for (int i = 0; i < w; i++)
    {
        *d = *s;
        s++;
        d++;
    }

    j++;
}

上面的代码在一个不安全的块中运行。

问题是:如何在复制时固定图像数据,以使 GC 不会移动它?

如果我使用 GCHandle.Alloc(source) 我得到:ArgumentException: Object contains non-primitive or non-blittable data 错误。

编辑

使用不安全代码的原因是因为对图像数据的唯一访问是通过IntPtr source.IP,如果有其他方法可以复制数据我是开放的:)

4

0 回答 0