// Update is called once per frame void Update() { string activity = car.GetActivity(); if (writer != null) { writer.WriteLine(string.Format("{0},{1},{2},{3}", frameCounter.ToString(), activity, car.GetSteering().ToString(), car.GetThrottle().ToString())); } if (camSensor != null) { Texture2D image = camSensor.GetImage(); ImageSaveJob ij = new ImageSaveJob(); ij.filename = Application.dataPath + string.Format("/../log/{0}_{1,8:D8}.png", activity, frameCounter); ij.bytes = image.EncodeToPNG(); lock (this) { imagesToSave.Add(ij); } if (maxFramesToLog != -1 && frameCounter >= maxFramesToLog) { Shutdown(); this.gameObject.SetActive(false); } } frameCounter = frameCounter + 1; }
public void SaverThread() { while (true) { int count = 0; lock (this) { count = imagesToSave.Count; } if (count > 0) { ImageSaveJob ij = imagesToSave[0]; //Debug.Log("saving: " + ij.filename); File.WriteAllBytes(ij.filename, ij.bytes); lock (this) { imagesToSave.RemoveAt(0); } } } }
private void SaveAsync(byte[] bytes, int length, string imgFileName, string timeFileName, DateTime renderTime) { byte[] copiedBytes = new byte[length]; System.Array.Copy(bytes, copiedBytes, length); string renderTimeStr = renderTime.ToString("MM/dd/yyyy hh:mm:ss.fff tt\n"); ImageSaveJob job = new ImageSaveJob(copiedBytes, length, imgFileName, timeFileName, renderTimeStr); ThreadStart threadStart = new ThreadStart(job.Run); new System.Threading.Thread(threadStart).Start(); }
//Save the camera sensor to an image. Use the suffix to distinguish between cameras. void SaveCamSensor(CameraSensor cs, string prefix, string suffix) { if (cs != null) { Texture2D image = cs.GetImage(); ImageSaveJob ij = new ImageSaveJob(); if (UdacityStyle) { ij.filename = GetUdacityStyleImageFilename(); ij.bytes = image.EncodeToJPG(); } else if (DonkeyStyle) { ij.filename = GetDonkeyStyleImageFilename(); ij.bytes = image.EncodeToJPG(); } else if (DonkeyStyle2) { ij.filename = GetDonkey2StyleImageFilename(); ij.bytes = image.EncodeToJPG(); } else if (SharkStyle) { ij.filename = GetSharkStyleImageFilename(); ij.bytes = image.EncodeToJPG(); } else { ij.filename = Application.dataPath + string.Format("/../log/{0}_{1,8:D8}{2}.png", prefix, frameCounter, suffix); ij.bytes = image.EncodeToPNG(); } lock (this) { imagesToSave.Add(ij); } } }
//Save the camera sensor to an image. Use the suffix to distinguish between cameras. void SaveCamSensor(CameraSensor cs, string prefix, string suffix) { if (cs != null) { Texture2D image = cs.GetImage(); ImageSaveJob ij = new ImageSaveJob(); ij.filename = Application.dataPath + string.Format("/../log/{0}_{1,8:D8}{2}.png", prefix, frameCounter, suffix); ij.bytes = image.EncodeToPNG(); lock (this) { imagesToSave.Add(ij); } } }
//Save the camera sensor to an image. Use the suffix to distinguish between cameras. void SaveCamSensor(CameraSensor cs, string prefix, string suffix) { if (cs != null) { Texture2D image = cs.GetImage(); ImageSaveJob ij = new ImageSaveJob(); ij.filename = GetImageFileName(); ij.bytes = image.EncodeToJPG(); lock (this) { imagesToSave.Add(ij); } } }
public ImageModule(IFileHandler fileUploadHandler, MessageRepository messageRepo, ImageRepository imageRepo) { Get("/imagerequest", args => { var identity = this.Context.CurrentUser; if (identity == null) { return(View["Login"]); } else { return(View["ImageRequest"]); } }); Post("/imagerequest", async args => { var request = this.Bind <ImageRequest>(); var uploadResult = await fileUploadHandler.HandleUpload(request.File.Name, request.File.Value); var identity = this.Context.CurrentUser; var userCookie = Request.Cookies.ContainsKey("picflow_webapp_username") ? Request.Cookies["picflow_webapp_username"] : string.Empty; if (request.PostImage) { var procJob = new ImageProcessingJob { Id = uploadResult.Identifier, Overlay = request.EventOverlay, Resolution = 2 }; var uploadJob = new ImageUploadJob { User = userCookie, Message = request.Message }; procJob.Successors.Add(uploadJob); await messageRepo.SendImageProcessingJob(procJob); } foreach (var resolution in request.Resolutions) { var procJob = new ImageProcessingJob { Id = uploadResult.Identifier, Overlay = request.EventOverlay, Resolution = resolution }; var saveJob = new ImageSaveJob { UserId = Guid.Parse(identity.Identity.Name), Message = request.Message, SourceId = uploadResult.Identifier, Resolution = resolution }; procJob.Successors.Add(saveJob); await messageRepo.SendImageProcessingJob(procJob); } var model = new Home { Message = $"Auftrag mit Bild {request.File?.Name} wurde gestartet" }; model.Jobs = await imageRepo.GetProcessingJobs(Guid.Parse(identity.Identity.Name)); return(View["Home", model]); }); }