ImageResizer удаляет предоставленную ссылку на изображение

Мы используем средство изменения размера изображения с сайта imageresizing.net и наблюдаем странное поведение.

Когда мы считываем изображение из потока, а затем изменяем его размер, мы больше не можем получить доступ к свойствам исходного изображения.

Следующий код воспроизведет проблему.

 static void Main(string[] args)
        {
            using(var httpPostedFileBaseImage = new FileStream(@"C:\test.jpg",FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                using(var uploadedImage = Image.FromStream(httpPostedFileBaseImage))
                {

                    Console.WriteLine(uploadedImage.Width);
                    var resizedImage = ImageBuilder.Current.Build(uploadedImage,
                                                                  new ResizeSettings("width=110;height=83"));

                    Console.WriteLine(uploadedImage.Width);
                }
            }
        }

Перед строкой ImageBuilder мы можем видеть uploadedImage.Width в порядке, но после этого выдается исключение:

System.ArgumentException was unhandled
  HResult=-2147024809
  Message=Parameter is not valid.
  Source=System.Drawing
  StackTrace:
       at System.Drawing.Image.get_Width()
       at ConsoleApplication6.Program.Main(String[] args) in C:\Users\Daniel\Desktop\ConsoleApplication6\ConsoleApplication6\Program.cs:line 25
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Есть ли что-то, что мы делаем неправильно, или это может быть ошибка в изменении размера изображения?

Обратите внимание :проблема возникла из-за приложения asp.net mvc, в которое были загружены изображения, поэтому переменная называется httpPostedFileBaseImage, и мы используем Image.FromStream вместо, возможно, Image.FromFile

. Изображение enter image description here, но это происходит на большинстве изображений.

РЕДАКТИРОВАТЬ:

Пробовал следующее после изменения размера изображения безрезультатно

httpPostedFileBaseImage.Seek(0, SeekOrigin.Begin);

РЕДАКТИРОВАТЬ2:

Вот это меня смутилоenter image description here

Документация, кажется, предполагает, что «он не будет удален, если disposeSource=true, или я неправильно это понимаю?

5
задан Lilith River 6 August 2012 в 14:17
поделиться