public void CompareHashesTest() { ImageHash hash1 = pHashNet.HashImage(HashAlgorithm.DCT, CommonTest.file1); ImageHash hash2 = pHashNet.HashImage(HashAlgorithm.DCT, CommonTest.file2); double actual; Assert.IsTrue((actual = pHashNet.CompareHashes(hash1, hash2)) > 0); hash1 = pHashNet.HashImage(HashAlgorithm.MH, CommonTest.file1); hash2 = pHashNet.HashImage(HashAlgorithm.MH, CommonTest.file2); Assert.IsTrue((actual = pHashNet.CompareHashes(hash1, hash2)) > 0); hash1 = pHashNet.HashImage(HashAlgorithm.Radial, CommonTest.file1); hash2 = pHashNet.HashImage(HashAlgorithm.Radial, CommonTest.file2); Assert.IsTrue((actual = pHashNet.CompareHashes(hash1, hash2)) > 0); //test the comparison of different hash algorithm hash1 = pHashNet.HashImage(HashAlgorithm.DCT, CommonTest.file1); hash2 = pHashNet.HashImage(HashAlgorithm.MH, CommonTest.file2); try { pHashNet.CompareHashes(hash1, hash2); Assert.Fail("Should have thrown an exception."); } catch (ArgumentException) { } catch (Exception) { Assert.Fail("Unexpected exception"); } }
public Relationship AddImageToTree(ImageHash hash, string extension, string relationshipType, string locationHint, string parentLocation, ContentTypeAction ctypeAction, out bool newBlob) { PhantomPart phantomPart = new PhantomPart(); phantomPart.ContentType = "image/" + extension; if (_blobPathsByUniqueId.TryGetValue(hash, out string value)) { phantomPart.Location = value; newBlob = false; } else { int num; switch (extension) { default: num = 0; break; case "jpg": case "png": case "gif": num = -1; break; } CompressionOption compressionOption = (CompressionOption)num; value = string.Format(CultureInfo.InvariantCulture, UniqueLocation(locationHint), extension); _blobPathsByUniqueId[hash] = value; phantomPart.Location = value; _parts.Add(phantomPart.Location, phantomPart); _package.CreatePart(new Uri(WordOpenXmlUtils.CleanName(phantomPart.Location), UriKind.Relative), phantomPart.ContentType, compressionOption); newBlob = true; } return(AddRelationship(phantomPart.Location, relationshipType, parentLocation)); }
/// <summary> /// 定时任务,自动比对异常表信号确认 /// </summary> /// <returns></returns> public async Task <List <CameraRepairDto> > GetCameraRepairImageCheck() { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var cameradata = await _camerarepository.GetListAsync(); var dvrdata = await _dVRrepository.GetListAsync(); var Repairdata = await _cameraRepairrepository.GetListAsync(); var cameraRepairdata = Repairdata.Where(u => u.RepairState == false); foreach (var item in cameraRepairdata) { var camera = cameradata.Where(u => u.Camera_ID == item.Camera_ID).FirstOrDefault(); if (camera != null) { var dvr = dvrdata.Where(u => u.DVR_ID == camera.DVR_ID).FirstOrDefault(); if (dvr != null) { // 获取设备截图并比对结果 string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={dvr.DVR_IP}&DVR_Name={dvr.DVR_usre}&DVR_PassWord={dvr.DVR_possword}&ChannelID={camera.channel_ID}"; try { ImageHelp2 imageHelp = new ImageHelp2(); var handler2 = new HttpClientHandler(); var response2 = await _httpClient.GetStreamAsync(url2); Image image = Image.FromStream(response2); Image image2 = Image.FromFile(Path.Combine(AppContext.BaseDirectory, "yichang.jpg")); Bitmap bitmap1 = imageHelp.Resize(image); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Difference); if (reqst > 0.9) { item.NoSignal = false; } else { item.NoSignal = true; } } catch (Exception) { item.NoSignal = null; } } } // var deletedata= _cameraRepairrepository.DeleteAsync(item); var repairrequst = await _cameraRepairrepository.UpdateAsync(item, true); } return(null); }
public void BanImage() { var ih = new ImageHash("aaaa"); this.bir.Setup(a => a.Ban(ih, "reason", this.ct)).Returns(Task.CompletedTask); this.fs.BanImage(ih, "reason", this.ct).Wait(); this.repo.VerifyAll(); }
public void Load() { Image = Helper.LoadImage(Path); var hash = Helper.GetImageHash(Image); if (ImageHash != null && !hash.ToList().SequenceEqual(ImageHash.ToList())) { throw new Exception("Image hash does not match."); } ImageHash = hash; }
public Relationship AddImageToTree(Stream data, ImageHash hash, string extension, string relationshipType, string locationHint, string parentLocation) { bool newBlob; Relationship relationship = _relationshipTree.AddImageToTree(hash, extension, relationshipType, locationHint, parentLocation, ContentTypeAction.Default, out newBlob); if (newBlob) { Stream stream = _zipPackage.GetPart(new Uri(WordOpenXmlUtils.CleanName(relationship.RelatedPart), UriKind.Relative)).GetStream(); WordOpenXmlUtils.CopyStream(data, stream); } return(relationship); }
public Relationship AddImageToTree(Stream data, ImageHash hash, string extension, string relationshipType, string locationHint, string parentLocation) { bool flag = default(bool); Relationship relationship = this._relationshipTree.AddImageToTree(hash, extension, relationshipType, locationHint, parentLocation, ContentTypeAction.Default, out flag); if (flag) { Package zipPackage = this._zipPackage; PackagePart part = zipPackage.GetPart(new Uri(WordOpenXmlUtils.CleanName(relationship.RelatedPart), UriKind.Relative)); Stream stream = part.GetStream(); WordOpenXmlUtils.CopyStream(data, stream); } return(relationship); }
public async Task <string> GetAsync(string d, string df) { string Imgpath1 = $"D:\\{d}"; string Imgpath2 = $"D:\\{df}"; Image image1 = Image.FromFile(Imgpath1); Image image2 = Image.FromFile(Imgpath2); ImageHelp2 imageHelp = new ImageHelp2(); Bitmap bitmap1 = imageHelp.Resize(image1); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Mean); // var reqst= imageHelp.GetSimilarity(bitmap1, bitmap2); return(reqst.ToString()); }
public void ReturnsCorrectAddressWithAnimatedImageAndCustomFormat() { var expected = new Uri("https://cdn.discordapp.com/avatars/0/a_1.png"); var userID = new Snowflake(0); var imageHash = new ImageHash("a_1"); var mockedUser = new Mock <IUser>(); mockedUser.SetupGet(g => g.Avatar).Returns(imageHash); mockedUser.SetupGet(g => g.ID).Returns(userID); var user = mockedUser.Object; var getActual = CDN.GetUserAvatarUrl(user, CDNImageFormat.PNG); Assert.True(getActual.IsSuccess); Assert.Equal(expected, getActual.Entity); }
public void ReturnsCorrectAddressWithAnimatedImageAndCustomFormat() { var expected = new Uri("https://cdn.discordapp.com/icons/0/a_1.png"); var guildID = new Snowflake(0); var imageHash = new ImageHash("a_1"); var mockedGuild = new Mock <IGuild>(); mockedGuild.SetupGet(g => g.Icon).Returns(imageHash); mockedGuild.SetupGet(g => g.ID).Returns(guildID); var guild = mockedGuild.Object; var getActual = CDN.GetGuildIconUrl(guild, CDNImageFormat.PNG); Assert.True(getActual.IsSuccess); Assert.Equal(expected, getActual.Entity); }
/// <inheritdoc /> protected override IEnumerable <Result <Uri> > GetImageUris ( Optional <CDNImageFormat> imageFormat = default, Optional <ushort> imageSize = default ) { var teamID = new Snowflake(0); var imageHash = new ImageHash("1"); var mockedTeam = new Mock <ITeam>(); mockedTeam.SetupGet(g => g.Icon).Returns(imageHash); mockedTeam.SetupGet(g => g.ID).Returns(teamID); var team = mockedTeam.Object; yield return(CDN.GetTeamIconUrl(team, imageFormat, imageSize)); yield return(CDN.GetTeamIconUrl(teamID, imageHash, imageFormat, imageSize)); }
/// <inheritdoc /> protected override IEnumerable <Result <Uri> > GetImageUris ( Optional <CDNImageFormat> imageFormat = default, Optional <ushort> imageSize = default ) { var applicationID = new Snowflake(0); var achievementID = new Snowflake(1); var imageHash = new ImageHash("2"); var mockedApplication = new Mock <IApplication>(); mockedApplication.SetupGet(g => g.ID).Returns(applicationID); var application = mockedApplication.Object; yield return(CDN.GetAchievementIconUrl(application, achievementID, imageHash, imageFormat, imageSize)); yield return(CDN.GetAchievementIconUrl(applicationID, achievementID, imageHash, imageFormat, imageSize)); }
/// <inheritdoc /> protected override IEnumerable <Result <Uri> > GetImageUris ( Optional <CDNImageFormat> imageFormat = default, Optional <ushort> imageSize = default ) { var userID = new Snowflake(0); var imageHash = new ImageHash("1"); var mockedUser = new Mock <IUser>(); mockedUser.SetupGet(g => g.Avatar).Returns(imageHash); mockedUser.SetupGet(g => g.ID).Returns(userID); var user = mockedUser.Object; yield return(CDN.GetUserAvatarUrl(user, imageFormat, imageSize)); yield return(CDN.GetUserAvatarUrl(userID, imageHash, imageFormat, imageSize)); }
/// <inheritdoc /> protected override IEnumerable <Result <Uri> > GetImageUris ( Optional <CDNImageFormat> imageFormat = default, Optional <ushort> imageSize = default ) { var guildID = new Snowflake(0); var imageHash = new ImageHash("1"); var mockedGuild = new Mock <IGuild>(); mockedGuild.SetupGet(g => g.Banner).Returns(imageHash); mockedGuild.SetupGet(g => g.ID).Returns(guildID); var guild = mockedGuild.Object; yield return(CDN.GetGuildBannerUrl(guild, imageFormat, imageSize)); yield return(CDN.GetGuildBannerUrl(guildID, imageHash, imageFormat, imageSize)); }
public Relationship AddImageToTree(ImageHash hash, string extension, string relationshipType, string locationHint, string parentLocation, ContentTypeAction ctypeAction, out bool newBlob) { PhantomPart phantomPart = new PhantomPart(); phantomPart.ContentType = "image/" + extension; string text = default(string); if (this._blobPathsByUniqueId.TryGetValue(hash, out text)) { phantomPart.Location = text; newBlob = false; } else { CompressionOption compressionOption = (CompressionOption)((extension == "jpg" || extension == "png" || extension == "gif") ? (-1) : 0); text = string.Format(CultureInfo.InvariantCulture, this.UniqueLocation(locationHint), extension); this._blobPathsByUniqueId[hash] = text; phantomPart.Location = text; this._parts.Add(phantomPart.Location, phantomPart); this._package.CreatePart(new Uri(WordOpenXmlUtils.CleanName(phantomPart.Location), UriKind.Relative), phantomPart.ContentType, compressionOption); newBlob = true; } return(this.AddRelationship(phantomPart.Location, relationshipType, parentLocation)); }
internal Relationship WriteImageData(byte[] imgBuf, ImageHash hash, string extension) { return(_manager.AddImageToTree(new MemoryStream(imgBuf), hash, extension, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", "word/media/img{0}.{{0}}", _currentPart.PartName)); }
public void ReturnsTrueForAnimatedHash() { var hash = new ImageHash("a_1269e74af4df7417b13759eae50c83dc"); Assert.True(hash.HasGif); }
public override void ActionExecute() { var addedItemGenre = Genres .Where(genre => GenreCheckBoxFilter .Where(checkbox => checkbox.IsSelected).Any(checkbox => checkbox.EntityID == genre.Id)) .ToObservableCollection(); Entity.Genres.AddItems(addedItemGenre.Where(item => Entity.Genres.Any(it => it.Id != item.Id))); //var removedGenre = // Genres // .Where(genre => GenreCheckBoxFilter // .Where(checkbox => !checkbox.IsSelected).Any(checkbox => checkbox.EntityID == genre.Id)) // .Where(genre => Entity.Genres.Any(entity => entity.Id == genre.Id)).ToObservableCollection(); //if (removedGenre.Count > 0) // Entity.Genres.RemoveItems(removedGenre); //var addedItemGenre = // Genres.Where( // genre => // GenreCheckBoxFilter // .Where(checkbox => checkbox.IsSelected) // .Any(checkbox => genre.Id == checkbox.EntityID) // ).Where(it => !Entity.Genres.Contains(it)).ToObservableCollection(); ////addedItemGenre = addedItemGenre.Where(genre => !Entity.Genres.Contains(genre)).ToObservableCollection(); //if(addedItemGenre.Count > 0) // Entity.Genres.AddItems(addedItemGenre); //var addedItemAuthor = // Authors.Where( // author => // AuthorCheckBoxFilter // .Where(checkbox => checkbox.IsSelected) // .Any(checkbox => checkbox.EntityID == author.Id) // ).ToObservableCollection(); //addedItemAuthor = addedItemAuthor.Where(author => !Entity.Authors.Contains(author)).ToObservableCollection(); //if (addedItemAuthor.Count > 0) // Entity.Authors.AddItems(addedItemAuthor); //var removedItemGenre = // Entity.Genres.Where( // genre => // GenreCheckBoxFilter // .Where(checkbox => !checkbox.IsSelected) // .Any(checkbox => checkbox.EntityID == genre.Id) // ).ToObservableCollection(); //if (removedItemGenre.Count > 0) // Entity.Genres.RemoveItems(removedItemGenre); //var removedItemAuthor = // Entity.Authors.Where( // author => // AuthorCheckBoxFilter // .Where(checkbox => !checkbox.IsSelected) // .Any(checkbox => checkbox.EntityID == author.Id) // ).ToObservableCollection(); //if (removedItemAuthor.Count > 0) // Entity.Authors.RemoveItems(removedItemAuthor); if (_imageFile != null) { var hash = new ImageHash().GetHash(_imageFile.FullName); var hashImage = hash + ".jpg"; var fpname = AppData.PathResourceImages + hashImage; if (!File.Exists(fpname)) { _imageFile.CopyTo(fpname); } Entity.PictureName = hashImage; } base.ActionExecute(); }
public void ReturnsFalseForStaticHash() { var hash = new ImageHash("1269e74af4df7417b13759eae50c83dc"); Assert.False(hash.HasGif); }
/// <summary> /// 定时任务,对比镜头数据 /// </summary> /// <returns></returns> public async Task <List <DVRChannelInfo> > GetDVRChannelInfo(string DVRRoom) { var configuration = BuildConfiguration(); var dvrurl = configuration.GetSection("DVRInfourl:url").Value; var dvrdata = _dVRrepository.Where(u => u.Monitoring_room == DVRRoom).ToList(); List <DVRCheckInfoDto> listdVRCheckInfo = new List <DVRCheckInfoDto>(); List <DVRChannelInfo> listdVRChannelInfo = new List <DVRChannelInfo>(); foreach (var item in dvrdata) { if (dvrdata != null) { string url = $"{dvrurl}/api/DVRInfo/Get?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}"; var handler = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response = _httpClient.GetAsync(url).Result; var dt = response.Content.ReadAsStringAsync().Result; try { var data = Newtonsoft.Json.JsonConvert.DeserializeObject <DVRInfoDto>(dt); //检查通道信息 var cameraData = _camerarepository.Where(u => u.DVR_ID == item.DVR_ID); if (data != null) { //检查通道信息存储到数据库 foreach (var tem in data.Channelname) { DVRChannelInfo dVRChannelInfo = new DVRChannelInfo(); var channldata = cameraData.Where(u => u.channel_ID == tem.Number).FirstOrDefault(); dVRChannelInfo.DVRChannelName = tem.Name; dVRChannelInfo.channel_ID = tem.Number; if (channldata != null) { dVRChannelInfo.DVR_ID = channldata.DVR_ID; dVRChannelInfo.Camera_ID = channldata.Camera_ID; string dataName = $"{channldata.Camera_ID} {channldata.Build}-{channldata.floor} {channldata.Direction}{channldata.Location}"; dVRChannelInfo.DataChannelName = dataName; string DVRname = tem.Name.Replace(" ", ""); if (dataName.Replace(" ", "") == DVRname) { dVRChannelInfo.ChannelNameCheck = true; } else { dVRChannelInfo.ChannelNameCheck = false; } } else { dVRChannelInfo.DataChannelName = "无"; } // 获取设备截图并比对结果 string url2 = $"{dvrurl}/api/DVRClannel/GetChannelPicture?DVR_IP={item.DVR_IP}&DVR_Name={item.DVR_usre}&DVR_PassWord={item.DVR_possword}&ChannelID={tem.Number}"; try { ImageHelp2 imageHelp = new ImageHelp2(); var handler2 = new HttpClientHandler();//{ AutomaticDecompression = DecompressionMethods.GZip }; var response2 = await _httpClient.GetStreamAsync(url2); Image image = Image.FromStream(response2); Image image2 = Image.FromFile(Path.Combine(AppContext.BaseDirectory, "yichang.jpg")); Bitmap bitmap1 = imageHelp.Resize(image); Bitmap bitmap2 = imageHelp.Resize(image2); var reqst = ImageHash.GetSimilarity(bitmap1, bitmap2, ImageHash.HashEnum.Difference); if (reqst > 0.9) { dVRChannelInfo.ImageCheck = false; } else { dVRChannelInfo.ImageCheck = true; } } catch (Exception) { dVRChannelInfo.ImageCheck = null; } var requst = await _dVRChannelInforepository.FindAsync(u => u.DVRChannelName == tem.Name); dVRChannelInfo.LastUpdateTime = DateTime.Now.ToString(); if (requst == null) { var EE = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(EE); } else { var F = _dVRChannelInforepository.DeleteAsync(requst); var DD = await _dVRChannelInforepository.InsertAsync(dVRChannelInfo, true); listdVRChannelInfo.Add(DD); } } } } catch (Exception) { } } else { return(null); } } return(listdVRChannelInfo); }
Task IFileService.BanImage(ImageHash imageHash, string reason, CancellationToken cancellationToken) { return(this.bannedImageRepository.Ban(imageHash, reason, cancellationToken)); }
Task IBannedImageRepository.Ban(ImageHash hash, string reason, CancellationToken cancellationToken) { this.client.BannedImages.Add(new BannedImage(Guid.NewGuid(), hash.Val, reason)); return(this.client.SaveChangesAsync(cancellationToken)); }
Task <bool> IBannedImageRepository.IsBanned(ImageHash hash, CancellationToken cancellationToken) { return(this.client.BannedImages.AnyAsync(a => a.Hash == hash.Val, cancellationToken)); }