public static Response GetSafeDanbooru(Request request) { string[] baseTags = { "rating:s" }; string[] requestTags = baseTags.Concat(request.CommandArgs).ToArray(); ResponseImage image = GetDanbooruImage(requestTags, request.Protocol, request.ChannelId); return(image.Url != null ? new Response() { Image = image } : new Response("Nothing found!")); }
public static Response GetDanbooru(Request request) { if (!request.ChannelIsNsfw) { return(new Response()); } ResponseImage image = GetDanbooruImage(request.CommandArgs, request.Protocol, request.ChannelId); return(image.Url != null ? new Response() { Image = image } : new Response("Nothing found!")); }
/// <summary> /// 响应图片 /// </summary> /// <param name="context"></param> /// <param name="responseImage"></param> private void SendResponseImage(HttpContext context, ResponseImage responseImage) { string data = @" <xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[{3}]]></MsgType> <Image> <MediaId><![CDATA[{4}]]></MediaId> </Image> </xml>"; data = string.Format(data, responseImage.ToUserName, //{0} responseImage.FromUserName, //{1} responseImage.CreateTime.Ticks, //{2} responseImage.MsgType.ToString().ToLower(), //{3} responseImage.MediaId //{4} ); SendResponse(context, data); }
public ResponseImage Edit(ResponseImage image) { var entityEntry = responseImagesDbSet.Update(image); return(entityEntry.Entity); }
public async Task <ResponseImage> CreateAsync(ResponseImage image) { var entityEntry = await responseImagesDbSet.AddAsync(image); return(entityEntry.Entity); }
public Response(string message, ResponseImage image) { Message = message; Image = image; }
public Response(ResponseImage image) { Message = ""; Image = image; }
public async Task <Response> CreateResponseAsync(Request request) { var requestRepository = storage.GetRepository <IRequestRepository>(); var responseRepository = storage.GetRepository <IResponseRepository>(); var responseImageRepository = storage.GetRepository <IResponseImageRepository>(); Response response; try { switch (request.Discriminator) { case nameof(SwapRequest): { string fromImagePath = Path.Combine(fileService.GlobalRequestImagesPath, request.Images.First().ImageName); string toImagePath = Path.Combine(fileService.GlobalRequestImagesPath, request.Images.Skip(1).First().ImageName); Bitmap swapFaces = FaceReplacer.ReplaceFaces(fromImagePath, toImagePath); response = new SwapResponse() { Discriminator = nameof(SwapResponse) }; await responseRepository.CreateAsync(response); ResponseImage responseImage = new ResponseImage() { Response = response }; await responseImageRepository.CreateAsync(responseImage); await storage.SaveAsync(); responseImage.ImageName = $"{responseImage.ImageId}.jpg"; responseImageRepository.Edit(responseImage); fileService.SaveFile(swapFaces, Path.Combine(fileService.GlobalResponseImagesPath, responseImage.ImageName)); break; } case nameof(CutRequest): { FaceRecognizer faceRecognizer = new FaceRecognizer(request.Images.First().ImageName, new RgbPixel(0, 0, 255), facePathSystem); var faceBuffers = faceRecognizer.GetAllFacesImages(); response = new CutResponse() { Discriminator = nameof(CutResponse) }; await responseRepository.CreateAsync(response); foreach (byte[] faceBuffer in faceBuffers) { ResponseImage responseImage = new ResponseImage() { Response = response }; await responseImageRepository.CreateAsync(responseImage); await storage.SaveAsync(); responseImage.ImageName = $"{responseImage.ImageId}.jpg"; responseImageRepository.Edit(responseImage); await fileService.SaveFileAsync(faceBuffer, Path.Combine(fileService.GlobalResponseImagesPath, responseImage.ImageName)); } break; } case nameof(DetectRequest): { FaceRecognizer faceRecognizer = new FaceRecognizer(request.Images.First().ImageName, new RgbPixel(0, 0, 255), facePathSystem); byte[] faceBuffer = faceRecognizer.GetOutlinedFacesImage(); response = new DetectResponse() { Discriminator = nameof(DetectResponse) }; await responseRepository.CreateAsync(response); ResponseImage responseImage = new ResponseImage() { Response = response }; await responseImageRepository.CreateAsync(responseImage); await storage.SaveAsync(); responseImage.ImageName = $"{responseImage.ImageId}.jpg"; responseImageRepository.Edit(responseImage); await fileService.SaveFileAsync(faceBuffer, Path.Combine(fileService.GlobalResponseImagesPath, responseImage.ImageName)); break; } default: { throw new KeyNotFoundException($"RequestType is {request.Discriminator} not exist."); } } ; } catch { foreach (RequestImage requestImage in request.Images) { fileService.DeleteFile(Path.Combine(fileService.GlobalRequestImagesPath, requestImage.ImageName)); } requestRepository.Delete(request); await storage.SaveAsync(); throw new InvalidDataException("Non valid images."); } request.Response = response; requestRepository.Edit(request); await storage.SaveAsync(); return(response); }