загрузка изображений - изменение размера, чтобы избежать атак контрабанды контента - PullRequest
0 голосов
/ 09 февраля 2012

Читая этот пост, я решил изменить размер изображения на 1 пиксель, чтобы остановить контрабанду контента:

Загрузка изображений - проблемы безопасности

Но почему-то прозрачные гифки выходят с черным фоном. Это код:

        Bitmap FullsizeImage = (Bitmap)System.Drawing.Image.FromStream(OriginalFile);

        //FullsizeImage.MakeTransparent(Color.Transparent);

        int NewWidth = FullsizeImage.Width - 1;
        int NewHeight = FullsizeImage.Height * NewWidth / FullsizeImage.Width;

        Bitmap CroppedImage = new Bitmap(NewWidth, NewHeight);
        Graphics g = Graphics.FromImage(CroppedImage);
        g.DrawImage(FullsizeImage, new Rectangle(0, 0, FullsizeImage.Width, FullsizeImage.Height));

        CroppedImage.Save(ImagePath, FullsizeImage.RawFormat);

        g.Dispose();
        CroppedImage.Dispose();
        FullsizeImage.Dispose();

Я попытался использовать FullsizeImage.MakeTransparent (Color.Transparent), но это преобразовало изображение в png, и я хочу сохранить исходный формат.

Мое последнее намерение состоит в том, чтобы избежать возможной атаки, поэтому есть идеи о том, как сделать это по-другому, а не изменить размер? Или у кого-нибудь есть код, который на самом деле изменяет размер прозрачных GIF-файлов, сохраняя формат?

1 Ответ

0 голосов
/ 09 февраля 2012

Изменение размера изображения требует его преобразования в полноцветный режим, и при этом прозрачность на уровне палитры теряется.

Я бы предложил добавить к изображению границу в 1 пиксель и использовать прозрачный цвет для заливки границы.

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