Определите тип файла из ImageFormat.MemoryBMP - PullRequest
5 голосов
/ 26 сентября 2011

После изменения размера изображения, моя функция изменения размера возвращает вновь нарисованное изображение.Я столкнулся с проблемой, где мне нужно определить, какое расширение файла должно быть у возвращенного Image.Ранее я использовал свойство Image.RawFormat, но каждый раз, когда из этой функции возвращается изображение, оно имеет ImageFormat.MemoryBMP, а не ImageFormat.Jpeg или ImageFormat.Gif, например.

Так что в основном мой вопрос заключается в том, как можноЯ определяю, какой тип файла должен быть только что измененный Image?

public static Image ResizeImage(Image imageToResize, int width, int height)
        {
            // Create a new empty image
            Image resizedImage = new Bitmap(width, height);

            // Create a new graphic from image
            Graphics graphic = Graphics.FromImage(resizedImage);

            // Set graphics modes
            graphic.SmoothingMode = SmoothingMode.HighQuality;
            graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;

            // Copy each property from old iamge to new image
            foreach (var prop in imageToResize.PropertyItems)
            {
                resizedImage.SetPropertyItem(prop);
            }

            // Draw the new Image at the resized size
            graphic.DrawImage(imageToResize, new Rectangle(0, 0, width, height));

            // Return the new image
            return resizedImage;
        }

1 Ответ

7 голосов
/ 26 сентября 2011

Измененное изображение не в каком-либо файловом формате, это несжатое представление памяти пикселей в изображении.

Чтобы сохранить это изображение обратно на диск, данные должны быть закодированы в выбранном формате, который вы должны указать. Посмотрите на метод Save, он принимает ImageFormat в качестве второго аргумента, сделайте этот Jpeg или любой другой формат, который лучше всего подходит для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...