Пара мыслей:
Прежде всего, как сказал Джим, при использовании Image.FromStream
поток должен оставаться открытым в течение всего времени жизни образа, как отмечено на странице MSDN.Поэтому я бы предложил скопировать содержимое файла в MemoryStream и использовать последний для создания экземпляра Image.Таким образом, вы можете освободить дескриптор файла как можно скорее.
Во-вторых, используемые вами изображения довольно большие (несжатые, так как они будут существовать в памяти, Width x Height x BytesPerPixel).Предполагая, что контекст, в котором вы их используете, может позволить уменьшить их размер, рассмотрите возможность их изменения размера и, возможно, кэширование версий с измененным размером где-то для дальнейшего использования.
Наконец, не забудьте утилизировать изображение и поток,они больше не нужны.