Некоторым изображениям не удается загрузиться на Windows Server 2008

У меня есть приложение, работающее на Windows Server 2008, который обрабатывает загруженные изображения. В настоящее время это успешно обрабатывает приблизительно 8 000 изображений в день, создавая 11 различных размеров каждого изображения.

Проблема, которую я имею, состоит в том, что иногда приложению не удается загрузить некоторые изображения, я получаю ошибку "Система. Время выполнения. InteropServices. ExternalException: универсальная ошибка произошла в GDI +"..

Загрузка только принимает файлы с расширением JPEG (jpg/jpeg/jpe) или с типом MIME JPEG, и от того, что я могу сказать, что те изображения являются действительно изображениями JPEG. Если я смотрю на файл изображения в Windows Explorer на сервере, он может успешно извлечь миниатюру из файла, но если я пытаюсь открыть его, я получаю сообщение об ошибке, "Это не допустимый растровый файл, или это - формат, в настоящее время не поддерживается". от Краски.

Если я копирую изображение в свой собственный компьютер, запуская Windows 7, нет никакой проблемы, открывающей изображение. Это работает в Краске, Windows Photo Viewer, Adobe Bridge и Photoshop. Если я пытаюсь загрузить изображение с помощью Изображения. FromStream тот же путь как в приложении, работающем на сервере, это загружается очень хорошо. (Я скопировал файл назад в сервер, и он все еще не работает, таким образом, нет ничего в процессе копирования, который изменяет его.)

Когда я смотрю на данные изображения в Мосту, я вижу, что изображения создаются с помощью Picasa 3.0, но кроме этого я не вижу ничего специального о них. Я еще не нашел никого имеющего ту же проблему или любые известные проблемы как это с приложением Picasa.

Кто-либо имел какую-либо подобную проблему или знает, существует ли что-то специальное об изображениях, созданных с помощью Picasa? Есть ли какой-либо кодек изображения, которому нужна установка на сервере для обработки всех видов изображений JPEG?

Вот пример изображения, которое не загружается на сервере: gdi-example.jpg (192 КБ).

8
задан Guffa 15 April 2010 в 08:49
поделиться

1 ответ

Из обмена экспертами я получил пример использования объекта BitmapImage для загрузки изображения и повторного сохранения его в MemoryStream. BitmapImage может по какой-то причине загружать изображения, которые объект Bitmap не может.

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

Итак, это последний код (без записи в журнал), который я использую сейчас:

using WpfImaging = System.Windows.Media.Imaging;
...

byte[] data = File.ReadAllBytes(FileName);

Image master;
using (MemoryStream source = new MemoryStream(data)) {
  var img = new WpfImaging.BitmapImage();
  img.BeginInit();
  img.StreamSource = source;
  img.EndInit();
  WpfImaging.BmpBitmapEncoder encoder = new WpfImaging.BmpBitmapEncoder();
  using (MemoryStream m = new MemoryStream()) {
    encoder.Frames.Add(WpfImaging.BitmapFrame.Create(img));
    encoder.Save(m);
    master = new Bitmap(m);
  }
}
2
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: