Ich habe ein C# -Programm Aufruf einer vorhandenen C-Image-Bibliothek DLL mit P/Invoke.Max Buffer Size beim Aufruf von Native-Methoden
Ist es möglich, dass die Größe der Puffer begrenzt ist, als effektiv verwaltet werden kann?
Ich rufe eine Funktion, wo ich einen Zeiger auf ein Inputbuffer übergeben, seine Größe und einem Output wie folgt aus:
cmsDoTransform(xform, inputBitmapBytesRGB, outputBitmapBytesCMYK, TotalPixels);
Während mit diesem Code zu experimentieren, hielt ich MemoryAccessViolation Fehler zu erhalten?
Also fing ich an, mit wirklich kleinen RGB-Bildern in Größen von 1x1 Pixel, 2x2, 4x4, 8x8, 16x16 bis 64x64 zu arbeiten und alles funktionierte, plötzlich, keine Fehlermeldungen mehr. Könnte nicht glücklicher sein.
Zuversichtlich ging ich zurück zu meinem ursprünglichen RGB-Testbild von 364x288 Pixel. Das hat nicht funktioniert? Zurück zu MemoryAccessViolationen?
Also reduzierte ich die Bildgröße von 364x288 auf 288x288 bis 256x256, bis es bei 128x128 "bestanden", was zu einer Bildgröße von 49.512 Bytes führte.
So wurde der Parameter TotalPixels im obigen Funktionsaufruf 128x128 oder 16.384. Es scheint über die "maximale" Zahl zu sein, die der .NET-Marshaller als Puffergröße akzeptiert. Ist das sinnvoll?
Gibt es in .NET eine Obergrenze, die ich bei den bescheidenen Arten der Bildverarbeitung, die ich mache, nicht überschreiten kann?
Stellen Sie sicher, dass der Index für das Byte [] ein ulong und keine ganze Zahl ist. – jdweng