private static void HttpGetImg(HttpServerResponse resp, HttpServerRequest req, bool Protected) { networkLed.High(); try { if (Protected) { string SessionId = req.Header.GetCookie("SessionId"); if (!CheckSession(SessionId)) { throw new HttpException(HttpStatusCode.ClientError_Forbidden); } } LinkSpriteJpegColorCamera.ImageSize Resolution; string Encoding; byte Compression; ushort Size; byte[] Data; GetImageProperties(req, out Encoding, out Compression, out Resolution); lock (cameraLed) { try { cameraLed.High(); if (Resolution != currentResolution) { try { camera.SetImageSize(Resolution); currentResolution = Resolution; camera.Reset(); } catch (Exception) { camera.Dispose(); camera = new LinkSpriteJpegColorCamera(LinkSpriteJpegColorCamera.BaudRate.Baud__38400); camera.SetBaudRate(LinkSpriteJpegColorCamera.BaudRate.Baud_115200); camera.Dispose(); camera = new LinkSpriteJpegColorCamera(LinkSpriteJpegColorCamera.BaudRate.Baud_115200); } } if (Compression != currentCompressionRatio) { camera.SetCompressionRatio(Compression); currentCompressionRatio = Compression; } camera.TakePicture(); Size = camera.GetJpegFileSize(); Data = camera.ReadJpegData(Size); errorLed.Low(); } catch (Exception ex) { errorLed.High(); Log.Exception(ex); throw new HttpException(HttpStatusCode.ServerError_ServiceUnavailable); } finally { cameraLed.Low(); camera.StopTakingPictures(); } } resp.ContentType = Encoding; resp.Expires = DateTime.Now; resp.ReturnCode = HttpStatusCode.Successful_OK; if (Encoding != "imgage/jpeg") { MemoryStream ms = new MemoryStream(Data); Bitmap Bmp = new Bitmap(ms); Data = MimeUtilities.EncodeSpecificType(Bmp, Encoding); } resp.WriteBinary(Data); } finally { networkLed.Low(); } }