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(); }
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(); }
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); }
public async Task <CameraImageResponse> GetXRAYImage(CameraImageCaptureRequest cameraImageCaptureRequest) { var cameraImageResponse = await _imageAcquisition.GetXRAYImage(cameraImageCaptureRequest); return(cameraImageResponse); }