-1
我有一些C++/CLI代碼可以創建一個簡單的CImg圖像並在其上繪製一個圓。我想將它傳遞給C#,但我不知道如何。我想使用一個字節數組傳遞給C#,但我無法獲得數組的長度,這是從byte *到byte []的任何轉換或傳遞到非託管內存流所需的。我已經使用strlen的嘗試,但只是返回0如何將CImg圖像對象從C++/CLI傳遞到C#
這裏是我的C++代碼:
unsigned char* calculateFrame::ReadImage() {
CImg<unsigned char> testImage(1920, 1080, 1, 3, 0);
const unsigned char white[3] = { 255,255,255 };
testImage.draw_circle(256, 256, 200, white, 1.0f, ~0U);
testImage.draw_point(500, 500, white, 255);
unsigned char* charArray = (unsigned char*)testImage;
return charArray;
}
C#代碼:
Bitmap testBmp;
using(var test = new FrameCalculator.calculateFrame())
{
Console.WriteLine(test.calculateOneFrame(3));
unsafe
{
byte* imageArray = test.ReadImage();
using(var ms = new UnmanagedMemoryStream(imageArray , /* length of byte* (unknown) */))
{
testBmp = new Bitmap(ms);
}
}
}
如果您有任何技巧來解決不安全的代碼而不犧牲性能,這將是很好的,但我不反對在必要時使用不安全的代碼。