powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как "обрезать" картинку?
4 сообщений из 4, страница 1 из 1
Как "обрезать" картинку?
    #33976797
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне для генерации thumbnail необходимо обрезать в пропорции 3х4 и затем создать уменьшенную копию картинки
Как это можно выполнить средствами .NET?
...
Рейтинг: 0 / 0
Как "обрезать" картинку?
    #33976889
kpumuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:

А>Мне для генерации thumbnail необходимо обрезать в пропорции 3х4 и затем создать уменьшенную копию картинки
А>Как это можно выполнить средствами .NET?


public static Image CropImage(Image sourceImage, int targetWidth, int targetHeight)
{
        int sourceWidth = sourceImage.Width;
        int sourceHeight = sourceImage.Height;
        int sourceX = 0, sourceY = 0;
        int targetX = 0, targetY = 0;

        float ratio, ratioWidth, ratioHeight;

        ratioWidth = ((float)targetWidth / (float)sourceWidth);
        ratioHeight = ((float)targetHeight / (float)sourceHeight);

        if (ratioHeight < ratioWidth)
        {
                ratio = ratioWidth;
                targetY = (int)((targetHeight - sourceHeight * ratio) / 2);
        }
        else
        {
                ratio = ratioHeight;
                targetX = (int)((targetWidth - sourceWidth * ratio) / 2);
        }

        int destWidth = (int)(sourceWidth * ratio);
        int destHeight = (int)(sourceHeight * ratio);

        Bitmap targetImage = new Bitmap(targetWidth, targetHeight, PixelFormat.Format24bppRgb);
        targetImage.SetResolution(sourceImage.HorizontalResolution, sourceImage.VerticalResolution);

        using (Graphics g = Graphics.FromImage(targetImage))
        {
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;

            g.DrawImage(sourceImage,
                                    new Rectangle(targetX, targetY, destWidth, destHeight),
                                    new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
                                    GraphicsUnit.Pixel);
        }
        
        return targetImage
}... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как "обрезать" картинку?
    #33976899
kpumuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, kpumuk, Вы писали:

K> return targetImage

Забыл точку с запятой :-)... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как "обрезать" картинку?
    #33976922
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, действительно полезная вещь
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как "обрезать" картинку?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]