public CameraImageResponse GetXRAYImage(CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            var          cameraImageResponse = _imageAcquisition.GetXRAYImage(cameraImageCaptureRequest);
            string       base64image         = cameraImageResponse.Base64;
            MemoryStream stream = new MemoryStream();

            int brightness = cameraImageCaptureRequest.light;
            int contrast   = cameraImageCaptureRequest.contrast;

            if (cameraImageCaptureRequest.negative == true)
            {
                image = Brightness(FromBase64Converter(base64image), brightness);
                image = Contrast(image, contrast);
                image = GreyscaleImage(image);
                image = Negative(image);
                image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                // create grayscale filter (BT709)
            }
            else
            {
                image = Brightness(FromBase64Converter(base64image), brightness);
                image = Contrast(image, contrast);
                image = GreyscaleImage(image);
                image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            }

            byte[] imageStreamByteArray = stream.ToArray();
            cameraImageResponse.Base64 = ToBase64Converter(imageStreamByteArray);
            return(cameraImageResponse);
        }
        public CameraImageResponse GetXRAYImage(CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            RTGMachine.busy       = true;
            videoDevices          = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            videoSource           = new VideoCaptureDevice(videoDevices[0].MonikerString);
            videoSource.NewFrame += video_NewCaptureFrame;

            RTGMachine.aTimer          = new System.Timers.Timer(10000);
            RTGMachine.aTimer.Elapsed += RTGMachine.OnTimedEvent;
            RTGMachine.aTimer.Enabled  = true;
            videoSource.Start();



            videoSource.WaitForStop();


            byte[] imageStreamByteArray = stream.ToArray();

            string imageBase64String = ConvertToBase64(imageStreamByteArray);

            CameraImageResponse cameraImageResponse = new CameraImageResponse();

            cameraImageResponse.Base64 = imageBase64String;

            return(cameraImageResponse);
        }
        public void GetXRAYImageTest()
        {
            rnd = new Random();
            CameraImageCaptureRequest cameraImageCaptureRequest = new CameraImageCaptureRequest();

            cameraImageCaptureRequest.contrast  = rnd.Next(0, 100);
            cameraImageCaptureRequest.light     = rnd.Next(0, 100);
            cameraImageCaptureRequest.imageDate = DateTime.Now.ToShortDateString();
            cameraImageCaptureRequest.imageTime = DateTime.Now.ToShortTimeString();
            int negative = rnd.Next(0, 1);

            if (negative == 1)
            {
                cameraImageCaptureRequest.negative = true;
            }
            else
            {
                cameraImageCaptureRequest.negative = false;
            }
            cameraImageCaptureRequest.patientName = "Jan Kowalski";
            cameraImageCaptureRequest.userName    = "******";
            var result = _imageAcquisition.GetXRAYImage(cameraImageCaptureRequest);

            result.Should().NotBeNull();
        }
Exemple #4
0
        public CameraImageResponse GetXRAYImage([FromBody] CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            CameraImageResponse cameraImageResponse = new CameraImageResponse();

            if (RTGMachine.busy == false)
            {
                cameraImageResponse = _imageService.GetXRAYImage(cameraImageCaptureRequest);
            }
            else
            {
                cameraImageResponse.errorMessage = "Camera is busy";
            }
            return(cameraImageResponse);
        }
        public void SaveImage(CameraImageCaptureRequest cameraImageCaptureRequest, string base64StringImage)
        {
            var pathToStorageDirectory        = System.AppDomain.CurrentDomain.BaseDirectory + "storage";
            int fileInStorageDirectoryCounter = Directory.GetFiles(pathToStorageDirectory, "*", SearchOption.TopDirectoryOnly).Length;
            var pathToCurrentlyTakenImage     = System.AppDomain.CurrentDomain.BaseDirectory + "storage/" + fileInStorageDirectoryCounter + "_rtgimage_" + cameraImageCaptureRequest.imageDate + "_" + cameraImageCaptureRequest.imageTime.Replace(":", "_") + ".jpg";

            var currentlyTakenImagesInBytes = Convert.FromBase64String(base64StringImage);

            using (var currentImageFile = new FileStream(pathToCurrentlyTakenImage, FileMode.Create))
            {
                currentImageFile.Write(currentlyTakenImagesInBytes, 0, currentlyTakenImagesInBytes.Length);
                currentImageFile.Flush();
            }


            FileStream currentImageFileStream = new FileStream(pathToCurrentlyTakenImage, FileMode.Open, FileAccess.Read, FileShare.Read);

            BitmapMetadata    myBitmapMetadata  = new BitmapMetadata("jpg");
            JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();
            var dataConvertion = cameraImageCaptureRequest.imageDate.Substring(3, 2) + "/" + cameraImageCaptureRequest.imageDate.Substring(0, 2) + "/" + cameraImageCaptureRequest.imageDate.Substring(6, 4);

            myBitmapMetadata.DateTaken = dataConvertion + " " + cameraImageCaptureRequest.imageTime.Substring(0, 5);
            myBitmapMetadata.Comment   = "Brightness:" + cameraImageCaptureRequest.light + ";Contrast:" + cameraImageCaptureRequest.contrast + ";Image negative:" + cameraImageCaptureRequest.negative + ";";
            var authorList = new List <string>();

            authorList.Add(cameraImageCaptureRequest.userName);
            ReadOnlyCollection <string> read = new ReadOnlyCollection <string>(authorList);

            myBitmapMetadata.Author = read;

            JpegBitmapDecoder jpegBitmapDecoder = new JpegBitmapDecoder(currentImageFileStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);

            currentImageFileStream.Close();

            jpegBitmapEncoder.Frames.Add(
                BitmapFrame.Create(
                    jpegBitmapDecoder.Frames[0],
                    jpegBitmapDecoder.Frames[0].Thumbnail,
                    myBitmapMetadata,
                    jpegBitmapDecoder.ColorContexts)
                );

            FileStream CurrentImageFileStreamCopy = new FileStream(pathToCurrentlyTakenImage, FileMode.Create, FileAccess.ReadWrite, FileShare.None);

            jpegBitmapEncoder.Save(CurrentImageFileStreamCopy);
            CurrentImageFileStreamCopy.Close();
            CurrentImageFileStreamCopy.Dispose();
        }
Exemple #6
0
        public void RTGParametersControllerPostTest()
        {
            //   var controller = new RtgParametersController(_imageService);
            var postJson = new CameraImageCaptureRequest();

            postJson.light    = 1;
            postJson.contrast = 2;
            //   postJson.blackWhite = true;
            postJson.patientName = "Marek";

            //   var response = controller.Post(postJson);

            /*       response.light.Should().Be(1);
             *     response.contrast.Should().Be(2);
             *     response.blackWhite.Should().BeTrue();
             *     response.patientName.Should().Be("Marek");*/
        }
        public async Task <CameraImageResponse> GetXRAYImage(CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            int           machineID = cameraImageCaptureRequest.machineID;
            HttpClient    client    = new HttpClient();
            StringContent rtgParametersStringContent = new StringContent(JsonConvert.SerializeObject(cameraImageCaptureRequest), Encoding.UTF8, "application/json");
            //HttpResponseMessage response = await client.PostAsync("http://"+RTGMachinesList.RTGMachineAddress[machineID]+"/api/camera/capture", rtgParametersStringContent);
            HttpResponseMessage response = await client.PostAsync("http://localhost:63766/api/camera/capture", rtgParametersStringContent);

            response.EnsureSuccessStatusCode();
            CreateCaptureLogForImage(JsonConvert.SerializeObject(cameraImageCaptureRequest));
            string responseBody = await response.Content.ReadAsStringAsync();

            var convertedResponseBody = JsonConvert.DeserializeObject <CameraImageResponse>(responseBody);

            if (convertedResponseBody.errorMessage == null)
            {
                SaveImage(cameraImageCaptureRequest, convertedResponseBody.Base64);
            }
            return(convertedResponseBody);
        }
        public Task <CameraImageResponse> GetXRAYImage([FromBody] CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            var cameraImageResponse = _imageService.GetXRAYImage(cameraImageCaptureRequest);

            return(cameraImageResponse);
        }
Exemple #9
0
        public async Task <CameraImageResponse> GetXRAYImage(CameraImageCaptureRequest cameraImageCaptureRequest)
        {
            var cameraImageResponse = await _imageAcquisition.GetXRAYImage(cameraImageCaptureRequest);

            return(cameraImageResponse);
        }