繁体   English   中英

如何有效地转换IList <byte> 到byte []?

[英]How to efficiently convert IList<byte> to byte[]?

我有效地将IList<byte>转换为byte[] 我正在与Xamarin Studio合作,使用OpenCV处理图像,使用Fotoapparat拍照。 我想将列表转换为数组,因为OpenCV期望数组不是列表。 我知道使用ToArray()进行转换的“简单”方法,但需要花费太多时间(转换时间超过8-9秒)。 作为参考,我的IList<byte>的长度为5564448。

有谁知道如何有效地将IList<byte>转换为byte[]

我找到了解决自己问题的方法。 也许有人将来会遇到同样的问题。 解决方案:

internal static IntPtr javaClassHandle;
internal static IntPtr classRef
{
    get
    {
        return JNIEnv.FindClass("io/fotoapparat/preview/Frame", ref javaClassHandle);
    }
}
static IntPtr imageJFieldId;

public void ProcessFrame(Frame frame)
{            
    int bufferSize = frame.Image.Count;
    var buffer = new byte[bufferSize];
    if (imageJFieldId == IntPtr.Zero)
        imageJFieldId = JNIEnv.GetFieldID(classRef, "image", "[B");
    var fieldObject = JNIEnv.GetObjectField(frame.Handle, imageJFieldId);
    var fastByteArray = new FastJavaByteArray(fieldObject);
    fastByteArray.CopyTo(buffer, 0);
}

链接到FastJavaByteArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM