我用Olympus相机的sdk开发一个考试拍照程序,用的ocx控件.它提供一个getpicture()方法将相机上的图片文件读入内存的byte[]数组(显示数组长度正确),然后我用fileStream存为jpg文件后,文件长度也正确,可就是打不开,也不能预览.用photoshop打开时说"jpg标志符长度不够".有人能给指点一下吗?

解决方案 »

  1.   

    我已经找到问题所在了,是getpicture()方法未能读取到数据.
    getpicture()只提供了vb和vc++的语法.语法如下(VC++语法):
    getPicture(nCamNum,lBufferSize,lpVarBuffer)
    第三个参数说明:VARIANT lpVarBuffer 是一个COleSafeArray 类型.可是在c#中应该用什么类型呢?它没说.我用byte[]数组读不出来 .保存的文件长度有,但里面都是空的.我的代码如下:
                    n=axRye1.get_propPicSize(0);
                    byte[] b = new byte[n];
                    axRye1.GetPicture(0, n, b);
                    FileStream fs = new FileStream(sFileName, FileMode.OpenOrCreate);
                    fs.Write(b, 0, n);
                    fs.Close();
    请问一下,vc++中的COleSafeArray 类型在c#中应该用什么代替?我应该怎么传递这个参数呢?