gpt4 book ai didi

c# - 在 C# 中,如何在不使用 Marshal 复制的情况下编写一个带有指向 FileStream 的 byte* 指针的数组?

转载 作者:行者123 更新时间:2023-11-30 12:22:27 25 4
gpt4 key购买 nike

我正在使用制造商提供的相机 SDK,他们给我一个名为 Image 的类,其中包含一个名为 data 的指针,类型为 byte* 指向图像数据的开头。他们还给了我一个名为 dataSizeuint,它对应于 data 的长度。

现在,我想使用 FileStream 将其写入文件,但不幸的是,FileStream 中唯一的写入函数是签名 Write(Byte[], Int32, Int32)。当然,如果我尝试使用 data 作为 Write(...) 的参数,它会告诉我无法将 byte* 转换为字节[]

因为在我的应用程序中,性能至关重要,所以我想避免按照建议使用 Marshal.Copy(...) 将数据复制到 byte[] 数组中在这个answer .

还有哪些其他选项可供我使用此 byte* 指针并将其写入文件?请注意,我的总体目标是拍摄这些每秒数千张的图像,并尽快将它们写入磁盘(即按顺序写入 SSD)。

最佳答案

看看 UnmanagedMemoryStream输入:

Image cameraData = YourSDKFunction();
using (var camera = new UnmanagedMemoryStream(cameraData.data, (int64)cameraData.dataSize))
using (var outFile = new FileStream("outputFile.jpg"))
{
camera.CopyTo(outFile);
}

关于c# - 在 C# 中,如何在不使用 Marshal 复制的情况下编写一个带有指向 FileStream 的 byte* 指针的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com