protected virtual void OnThumbnailCreated(ThumbnailCreateEventArgs e) { if (ThumbnailCreated != null) { ThumbnailCreated(e); } }
/// <summary> /// Check and create thumbnails if necessary /// </summary> public void CheckThumbs(bool cleanup) { var missingThumbsSrc = new List <string>(); var missingThumbsTrg = new List <string>(); foreach (var ext in _imgExtensions) { var paths = Directory.GetFiles(ImageDirPath, ext, SearchOption.AllDirectories); foreach (var file in paths) { if (!file.Contains(ExcludeThumbDirName) && !file.StartsWith(ThumbDirPath)) { var relativePath = file.Substring((ImageDirPath + Path.DirectorySeparatorChar).Length); var thumbPath = ThumbDirPath + Path.DirectorySeparatorChar + relativePath; if (!File.Exists(thumbPath)) { missingThumbsSrc.Add(file); missingThumbsTrg.Add(thumbPath); } } } // Cleanup if (cleanup) { // Cleanup images of which no original file exists var tumbPaths = Directory.GetFiles(ThumbDirPath, ext, SearchOption.AllDirectories); foreach (var file in tumbPaths) { var realImage = file.Replace(ThumbDirPath, ImageDirPath); if (!File.Exists(realImage)) { File.Delete(file); } } // Cleanup empty directories FileUtils.RemoveEmptySubdirectories(ThumbDirPath); } } var cnt = missingThumbsSrc.Count; if (cnt > 0) { for (var i = 0; i < cnt; i++) { ImageUtils.CreateThumb(missingThumbsSrc[i], missingThumbsTrg[i], DefaultThumbSize); if (i % 10 == 0) { var e = new ThumbnailCreateEventArgs(i, cnt); OnThumbnailCreated(e); } } } }