Пример #1
0
        public int Save(string filePath, JFImageSaveFileType fileType = JFImageSaveFileType.Bmp)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return((int)ErrorDef.ParamError);
            }
            string extension = "bmp";

            switch (fileType)
            {
            case JFImageSaveFileType.Jpg:
                extension = "jpeg";
                break;

            case JFImageSaveFileType.Png:
                extension = "png";
                break;

            case JFImageSaveFileType.Tif:
                extension = "tiff";
                break;

            default:
                break;
            }
            try
            {
                HOperatorSet.WriteImage(hoImage, extension, 0, filePath);
            }
            catch
            {
                return((int)ErrorDef.FileExc);
            }
            return((int)ErrorDef.Success);
        }
Пример #2
0
        /// <summary>保存图像到文件中 </summary>
        public int Save(string filePath, JFImageSaveFileType fileType = JFImageSaveFileType.Bmp)
        {
            string dir = Path.GetDirectoryName(filePath);

            if (!Directory.Exists(dir))
            {
                DirectoryInfo di = Directory.CreateDirectory(dir);
                if (di == null || !di.Exists)
                {
                    return((int)ErrorDef.FolderUnExist);
                }
            }



            try
            {
                if (fileType == JFImageSaveFileType.Bmp || fileType == JFImageSaveFileType.Jpg) //调用Hik提供的功能
                {
                    int    imgFileBuffLen = _frameInfo.nHeight * _frameInfo.nWidth * 3 + 2048;
                    byte[] imgFileBytes   = new byte[imgFileBuffLen];
                    IntPtr pBufImage      = Marshal.UnsafeAddrOfPinnedArrayElement(imgFileBytes, 0);
                    MyCamera.MV_SAVE_IMAGE_PARAM_EX stSaveParam = new MyCamera.MV_SAVE_IMAGE_PARAM_EX();
                    stSaveParam.enImageType  = (MyCamera.MV_SAVE_IAMGE_TYPE)(fileType + 1);
                    stSaveParam.enPixelType  = _frameInfo.enPixelType;
                    stSaveParam.pData        = Marshal.UnsafeAddrOfPinnedArrayElement(_dataBytes, 0);;
                    stSaveParam.nDataLen     = _frameInfo.nFrameLen;
                    stSaveParam.nHeight      = _frameInfo.nHeight;
                    stSaveParam.nWidth       = _frameInfo.nWidth;
                    stSaveParam.pImageBuffer = pBufImage;
                    stSaveParam.nBufferSize  = (uint)(_frameInfo.nHeight * _frameInfo.nWidth * 3 + 2048);
                    if (fileType == JFImageSaveFileType.Jpg) //if(stSaveParam.enImageType == MyCamera.MV_SAVE_IAMGE_TYPE.MV_Image_Jpeg)
                    {
                        stSaveParam.nJpgQuality = 99;
                    }

                    int err = _cmr.MV_CC_SaveImageEx_NET(ref stSaveParam);
                    if (MyCamera.MV_OK != err)
                    {
                        return((int)ErrorDef.InvokeFailed);
                    }


                    FileStream pFile = new FileStream(filePath, FileMode.Create);
                    pFile.Write(imgFileBytes, 0, (int)stSaveParam.nImageLen);
                    pFile.Close();
                }
                else if (fileType == JFImageSaveFileType.Tif)
                {
                    string fn = Path.GetFileNameWithoutExtension(filePath);
                    if (string.IsNullOrEmpty(fn))
                    {
                        return((int)ErrorDef.FolderUnExist);
                    }
                    object oimg;
                    int    ret = GenHalcon(out oimg);
                    if (0 != ret)
                    {
                        return(ret);
                    }
                    string extension = Path.GetExtension(filePath);
                    //if (string.IsNullOrEmpty(extension) ||
                    //    0 != string.Compare(".tiff", extension, true) ||
                    //    0 != string.Compare(".tif", extension, true))
                    //    filePath += ".tiff";
                    //if (!string.IsNullOrEmpty(extension)) // 去掉后缀
                    //    filePath = Path.GetFileNameWithoutExtension(filePath);
                    HOperatorSet.WriteImage(oimg as HObject, "tiff", 0, filePath);
                    (oimg as HObject).Dispose();
                    return((int)ErrorDef.Success);
                }
                else if (fileType == JFImageSaveFileType.Png)
                {
                    string fn = Path.GetFileNameWithoutExtension(filePath);
                    if (string.IsNullOrEmpty(fn))
                    {
                        return((int)ErrorDef.FolderUnExist);
                    }
                    object oimg;
                    int    ret = GenHalcon(out oimg);
                    if (0 != ret)
                    {
                        return(ret);
                    }
                    //string extension = Path.GetExtension(filePath);
                    //if (string.IsNullOrEmpty(extension) ||
                    //    0 != string.Compare(".png", extension, true) )
                    //    filePath += ".png";
                    HOperatorSet.WriteImage(oimg as HObject, "png", 0, filePath);
                    (oimg as HObject).Dispose();
                    return((int)ErrorDef.Success);
                }
                else
                {
                    return((int)ErrorDef.Unsupported);
                    //throw new ArgumentException("不支持的图像存储格式:" + fileType.ToString());
                }

                return((int)ErrorDef.Success);
            }
            catch
            {
                return((int)ErrorDef.FileExc);
            }
        }