Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2013, 01:03   #1
Morbo
Новичок
Джуниор
 
Регистрация: 23.09.2013
Сообщений: 1
Вопрос Изменение разрешения изображения. Graphics. Без draw его

В следующем контексте надо изменить разрешение g по горизонтали, ну и чтобы по вертикали автоматом стало (без изменения соотношения сторон):
Код:
            foreach (string imageFileName in allfilenames) {
                img = (Bitmap)Image.FromFile(imageFileName);

                using (Graphics g = Graphics.FromImage(img))
                {
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.PixelOffsetMode = PixelOffsetMode.HighQuality;

                    Rectangle rect = new Rectangle(0, 0, img.Width, img.Height);
                    g.DrawImage(img, rect, 0, 0, 320, 240, GraphicsUnit.Pixel);

                    img.Save(imageFileName + "_resized.jpg", ImageFormat.Jpeg);

                }


            }
320x240 это для теста и чтобы показать что делает этот код:
->

Надо задать разрешение bitmap'а "img", а потом вписать в него "g" с его параметрами. Но если просто написать img.SetResolution(320, 240) то это не поможет.
Но даже если бы помогло, надо еще сохранить изображение с пропорциями, а не 240 по высоте, как я указал. Нужно чтобы функция сама распределила неделящиеся пиксели и все правильно нарисовала. Конструкция типа height = 320 * (img.Width/img.Height) не подойдет из-за того что числа будут не целыми, а пиксели делить нельзя. В таком случае быдлокод какой-то получается.

Последний раз редактировалось Morbo; 30.09.2013 в 16:02.
Morbo вне форума Ответить с цитированием
Старый 02.10.2013, 13:54   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
height = 320 * Math.Round(img.Width/img.Height)
?
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение разрешения изображения .jpg Nina+ Общие вопросы C/C++ 2 21.06.2012 22:28
Изменение разрешения экрана sanya_fl Общие вопросы .NET 1 13.09.2011 14:49
[C#] Изменение разрешения изображения JonMagon Помощь студентам 0 22.08.2011 15:30
Изменение разрешения Gapro Общие вопросы Delphi 4 10.11.2009 20:39
изменение разрешения Sanek777 Общие вопросы Delphi 1 11.09.2008 17:43