Pārlūkot izejas kodu

fixes #626 - Image editing page errors if an image is missing

Luke Pulverenti 11 gadi atpakaļ
vecāks
revīzija
340c80bcec
1 mainītis faili ar 43 papildinājumiem un 49 dzēšanām
  1. 43 49
      MediaBrowser.Api/Images/ImageService.cs

+ 43 - 49
MediaBrowser.Api/Images/ImageService.cs

@@ -402,41 +402,24 @@ namespace MediaBrowser.Api.Images
 
             foreach (var image in item.Images)
             {
-                var path = image.Value;
+                var info = GetImageInfo(image.Value, item, null, image.Key);
 
-                var fileInfo = new FileInfo(path);
-
-                var size = _imageProcessor.GetImageSize(path);
-
-                list.Add(new ImageInfo
+                if (info != null)
                 {
-                    Path = path,
-                    ImageType = image.Key,
-                    ImageTag = _imageProcessor.GetImageCacheTag(item, image.Key, path),
-                    Size = fileInfo.Length,
-                    Width = Convert.ToInt32(size.Width),
-                    Height = Convert.ToInt32(size.Height)
-                });
+                    list.Add(info);
+                }
             }
 
             var index = 0;
 
             foreach (var image in item.BackdropImagePaths)
             {
-                var fileInfo = new FileInfo(image);
-
-                var size = _imageProcessor.GetImageSize(image);
+                var info = GetImageInfo(image, item, index, ImageType.Backdrop);
 
-                list.Add(new ImageInfo
+                if (info != null)
                 {
-                    Path = image,
-                    ImageIndex = index,
-                    ImageType = ImageType.Backdrop,
-                    ImageTag = _imageProcessor.GetImageCacheTag(item, ImageType.Backdrop, image),
-                    Size = fileInfo.Length,
-                    Width = Convert.ToInt32(size.Width),
-                    Height = Convert.ToInt32(size.Height)
-                });
+                    list.Add(info);
+                }
 
                 index++;
             }
@@ -445,20 +428,12 @@ namespace MediaBrowser.Api.Images
 
             foreach (var image in item.ScreenshotImagePaths)
             {
-                var fileInfo = new FileInfo(image);
-
-                var size = _imageProcessor.GetImageSize(image);
+                var info = GetImageInfo(image, item, index, ImageType.Screenshot);
 
-                list.Add(new ImageInfo
+                if (info != null)
                 {
-                    Path = image,
-                    ImageIndex = index,
-                    ImageType = ImageType.Screenshot,
-                    ImageTag = _imageProcessor.GetImageCacheTag(item, ImageType.Screenshot, image),
-                    Size = fileInfo.Length,
-                    Width = Convert.ToInt32(size.Width),
-                    Height = Convert.ToInt32(size.Height)
-                });
+                    list.Add(info);
+                }
 
                 index++;
             }
@@ -475,20 +450,12 @@ namespace MediaBrowser.Api.Images
                     {
                         var image = chapter.ImagePath;
 
-                        var fileInfo = new FileInfo(image);
+                        var info = GetImageInfo(image, item, index, ImageType.Chapter);
 
-                        var size = _imageProcessor.GetImageSize(image);
-
-                        list.Add(new ImageInfo
+                        if (info != null)
                         {
-                            Path = image,
-                            ImageIndex = index,
-                            ImageType = ImageType.Chapter,
-                            ImageTag = _imageProcessor.GetImageCacheTag(item, ImageType.Chapter, image),
-                            Size = fileInfo.Length,
-                            Width = Convert.ToInt32(size.Width),
-                            Height = Convert.ToInt32(size.Height)
-                        });
+                            list.Add(info);
+                        }
                     }
 
                     index++;
@@ -498,6 +465,33 @@ namespace MediaBrowser.Api.Images
             return list;
         }
 
+        private ImageInfo GetImageInfo(string path, BaseItem item, int? imageIndex, ImageType type)
+        {
+            try
+            {
+                var fileInfo = new FileInfo(path);
+
+                var size = _imageProcessor.GetImageSize(path);
+
+                return new ImageInfo
+                {
+                    Path = path,
+                    ImageIndex = imageIndex,
+                    ImageType = type,
+                    ImageTag = _imageProcessor.GetImageCacheTag(item, type, path),
+                    Size = fileInfo.Length,
+                    Width = Convert.ToInt32(size.Width),
+                    Height = Convert.ToInt32(size.Height)
+                };
+            }
+            catch (IOException ex)
+            {
+                Logger.ErrorException("Error getting image information for {0}", ex, path);
+
+                return null;
+            }
+        }
+
         /// <summary>
         /// Gets the specified request.
         /// </summary>