referencia a How to get IntPtr from byte[] in C#IntPtr de matriz de bytes y Back
Estoy intentando leer los datos que un IntPtr hace referencia en un byte [] y luego de nuevo en otra IntPtr. El puntero hace referencia a una imagen capturada desde un dispositivo de escáner, por lo que también he supuesto que la captura de esta información debe colocarse en una matriz de bytes.
También estoy seguro de si el método Marshal.SizeOf() devolverá el tamaño de los datos que hacen referencia a la IntPtr está o el tamaño del puntero en sí.
Mi problema es que estoy recibiendo el error " 'System.Byte []' no puede ser calculan las referencias como una estructura no administrado; sin cantidad significativa o desplazamiento puede ser calculado"
IntPtr bmpptr = Twain.GlobalLock (hImage);
try
{
byte[] _imageTemp = new byte[Marshal.SizeOf(bmpptr)];
Marshal.Copy(bmpptr, _imageTemp, 0, Marshal.SizeOf(bmpptr));
IntPtr unmanagedPointer = Marshal.AllocHGlobal(
Marshal.SizeOf(_imageTemp));
try
{
Marshal.Copy(_imageTemp, 0, unmanagedPointer,
Marshal.SizeOf(_imageTemp));
Gdip.SaveDIBAs(
string.Format("{0}\\{1}.{2}", CaptureFolder, "Test", "jpg"),
unmanagedPointer, false);
}
finally
{
Marshal.FreeHGlobal(unmanagedPointer);
}
}
catch (Exception e)
{
Scanner.control.Test = e.Message;
}
Por qué no puedes simplemente usar 'bmpptr' en la llamada a' Gdip.SaveDIBAs'? – SwDevMan81
eso es lo que el código Estoy modificando está haciendo hoy en día, este control está siendo utilizado como un control Active X y estamos tratando de deshacerse de almacenamiento del lado del cliente de las imágenes. Gdip.SaveDIBAs está guardando la imagen en el almacenamiento local, quiero poder enviar el byte [] al servidor para la creación de la imagen. Este código es mi intento de prototipo de esa funcionalidad. –
Ok, ¿así que solo quieres pasar del 'bmpptr' no gestionado a un' byte [] '? – SwDevMan81