Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
18 / 18 / 15
Регистрация: 27.11.2013
Сообщений: 470

Пропорциональное изменение размера Bitmap

20.08.2018, 23:51. Показов 2319. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть такой код для уменьшения изображений
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static Bitmap MergeTwoImages(Image firstImage, Image secondImage)
        {
 
            if (firstImage == null)
            {
                throw new ArgumentNullException("firstImage");
            }
 
            if (secondImage == null)
            {
                throw new ArgumentNullException("secondImage");
            }
 
            // Проверяем, меньше ли ширина первого изображения, чем второго 
            if (firstImage.Width < secondImage.Width)
            {
                // Масштабируем второе изображение
                secondImage = ResizeImgByWidth(secondImage, firstImage.Width);
            }
 
            else if (firstImage.Width > secondImage.Width)
            {
                // Масштабируем первое изображение
                firstImage = ResizeImgByWidth(firstImage, secondImage.Width);
            }
 
            // Создаем Bitmap с шириной картинок (на данном шаге они уже точно равны) и их суммарной высотой
            Bitmap result = new Bitmap(firstImage.Width, firstImage.Height + secondImage.Height);
 
            // Создаем Graphics из заданного изображения
            using (Graphics g = Graphics.FromImage(result))
            {
                // Отрисовываем первую картинку в верхнем левом углу
                g.DrawImage(firstImage, new Point(0, 0));
                // Отрисовываем вторую картинку под первой
                g.DrawImage(secondImage, new Point(0, firstImage.Height));
                // Сохраняем текущее состояние
                g.Save();
            }
            return result;
        }
 
        // Пропорционально изменяем размер изображения по указанной ширине
        private static Bitmap ResizeImgByWidth(Image Img, int NewWidth) => new Bitmap(Img, new Size(NewWidth, (int)(Img.Height * (NewWidth / (double)Img.Width))));

Вызываю его так:
C#
1
2
3
4
5
6
7
8
9
Image img1 = Image.FromFile("shapka.jpg");
 
            Image img2 = Image.FromFile(diskSave + "poster.jpg");
 
            Bitmap bmpSave = (Bitmap)MergeTwoImages(img1, img2);
            img1.Dispose();
            img2.Dispose();
            bmpSave.Save(diskSave + "poster.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            bmpSave.Dispose();

Все работает хорошо, если ширина secondImage больше, чем firstImage. Но если все наоборот, то конечный результат получается не таким, как мне надо (см. файл poster.jpg). Подскажите, что не так? Размеры файла shapka.jpg первоначально 499x70.
Миниатюры
Пропорциональное изменение размера Bitmap   Пропорциональное изменение размера Bitmap  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2018, 23:51
Ответы с готовыми решениями:

Изменение контраста bitmap
public System.Drawing.Bitmap Apply(Bitmap bmpImg) { var BrightnessContrastImage = new Bitmap(bmpImg.Width,...

Пропорциональное изменение размера tabControl1 при изменении размера формы
Всем hello. Посоветуйте, что сделать. На форме есть компоненты, делаю, чтобы при изменении размера формы элементы притягивались к краям...

Пропорциональное изменение размера формы.
Здравствуйте. Возникла проблема(а точнее лень в обдумке алгоритма): как можно при событии Resize изменять высоту и ширину пропорционально...

1
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
21.08.2018, 03:24
Лучший ответ Сообщение было отмечено FaNaT_96 как решение

Решение

При выводе второго изображения задайте размер.
Должно работать и так но получается как у вас
C#
1
g.DrawImage(secondImage, 0, firstImage.Height, secondImage.Width, secondImage.Height);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2018, 03:24
Помогаю со студенческими работами здесь

Пропорциональное изменение размера изображения
Подскажите, пожалуйста, почему изображение в браузер не выводится, видно только альтернативный текст? Гугл сказал, что вот здесь точно...

пропорциональное изменение размера формы
пропорциональное изменение размера формы как сделать чтобы у меня менялась ширина в зависимости от высоты и высота в зависимости от ширины

Пропорциональное изменение размера div блока
Мне нужно при растягивании смотреть на высоту и ширину элемента и если их произведение больше площади то делать false на изменение...

Изменение размера Bitmap
В компоненте используется двойная буферизация. Пытался искать уязвимые по производительности функции и обнаружил, что больше всего времени...

Изменение размера Bitmap без потери качества
Здравствуйте, уважаемые программисты. Третий день юзаю поиск, много решений перепробовал, но почему то не получается решить мою проблему....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru