예제 #1
0
        private string getBarCode(Bitmap bitmap, out Bitmap resultImage, out ArrayList resultBarCode)
        {
            string returnValue = String.Empty;

            float imageRotationDegree = ModuleConfiguration.Default_ImageRotationDegree;

            if (imageRotationDegree != 0)
            {
                Dictionary <string, object> rotationParams = ModuleConfiguration.Default_ImageRotationParameters;

                if ((rotationParams != null) && (rotationParams.Count > 0))
                {
                    int  rotationAtPercentageOfImageWidth  = (int)(rotationParams["RotationAtPercentageOfImageWidth"]);
                    int  rotationAtPercentageOfImageHeight = (int)(rotationParams["RotationAtPercentageOfImageHeight"]);
                    bool isNoClip = (bool)(rotationParams["IsNoClip"]);

                    bitmap = BarcodeUtility.RotateImage(bitmap, (bitmap.Width * (rotationAtPercentageOfImageWidth / 100)), (bitmap.Height * (rotationAtPercentageOfImageHeight / 100)), imageRotationDegree, isNoClip);
                }
                else
                {
                    bitmap = BarcodeUtility.RotateImage(bitmap, imageRotationDegree);
                }
            }

            if (ModuleConfiguration.IsCheckingSkewAngle)
            {
                DeSkewUtility deSkewUtility = new DeSkewUtility();

                deSkewUtility.New(bitmap);

                double skewAngle = -1.0 * deSkewUtility.GetSkewAngle();

                bitmap = BarcodeUtility.RotateImage(bitmap, ((float)(skewAngle)));
            }

            ArrayList codesRead = new ArrayList();

            BarcodeUtility.FullScanPage(ref codesRead, bitmap, ModuleConfiguration.Default_BarCodeScanningTimes);

            if (codesRead.Count > 0)
            {
                returnValue = codesRead[0].ToString();
            }

            resultImage = bitmap;

            resultBarCode = codesRead;

            return(returnValue);
        }
        private string getBarCode(out Bitmap rawImage, out ArrayList rawBarCode)
        {
            string returnValue = String.Empty;

            //byte[] imageBytes = new byte[1024];

            //this.camera.GetImage(imageBytes, ModuleConfiguration.Default_TimeredBarCodeCameraTimeout);

            //MemoryStream stream = new MemoryStream(imageBytes);

            Bitmap bitmap = null;// = new Bitmap(stream);

            this.camera.GetImage(out bitmap, ModuleConfiguration.Default_TimeredBarCodeCameraTimeout);

            float imageRotationDegree = ModuleConfiguration.Default_ImageRotationDegree;

            if (imageRotationDegree != 0)
            {
                Dictionary <string, object> rotationParams = ModuleConfiguration.Defautl_ImageRotationParameters;

                if ((rotationParams != null) && (rotationParams.Count > 0))
                {
                    int  rotationAtPercentageOfImageWidth  = (int)(rotationParams["RotationAtPercentageOfImageWidth"]);
                    int  rotationAtPercentageOfImageHeight = (int)(rotationParams["RotationAtPercentageOfImageHeight"]);
                    bool isNoClip = (bool)(rotationParams["IsNoClip"]);

                    bitmap = BarcodeUtility.RotateImage(bitmap, (bitmap.Width * (rotationAtPercentageOfImageWidth / 100)), (bitmap.Height * (rotationAtPercentageOfImageHeight / 100)), imageRotationDegree, isNoClip);
                }
                else
                {
                    bitmap = BarcodeUtility.RotateImage(bitmap, imageRotationDegree);
                }
            }

            ArrayList codesRead = new ArrayList();

            BarcodeUtility.FullScanPage(ref codesRead, bitmap, ModuleConfiguration.Default_TimeredBarCodeCameraScanningTimes);

            if (codesRead.Count > 0)
            {
                returnValue = codesRead[0].ToString();
            }

            rawImage = bitmap;

            rawBarCode = codesRead;

            return(returnValue);
        }