Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
19 / 17 / 5
Регистрация: 06.09.2011
Сообщений: 51
1

Сжатие изображения со сглаживанием

16.12.2011, 18:02. Показов 3407. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как получить изображение, уменьшенное вдвое со сглаживанием?
Следующий код даёт что-то хаотическое вместо желаемого изображения
Может быть, есть средства, с помощью которых это делается проще?
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
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.ShowDialog();
            try
            {
                Bitmap bmp = new Bitmap(ofd.FileName);
                gr.DrawImage(bmp, new Point(0, 0));
                Bitmap nbm = new Bitmap(bmp.Width / 2, bmp.Height / 2);
                BitmapData bmd = nbm.LockBits(new Rectangle(0, 0, bmp.Width / 2, bmp.Height / 2), ImageLockMode.ReadWrite, bmp.PixelFormat);
                int bytes = bmd.Height * Math.Abs(bmd.Stride);
                IntPtr ptr = bmd.Scan0;
                byte[] rgbs = new byte[bytes];
                System.Runtime.InteropServices.Marshal.Copy(ptr,rgbs,0,bytes);
                for (int i = 0; i<bmd.Width; i++)
                    for (int j = 0; j<bmd.Height; j++)
                    {
                        Color p1 = bmp.GetPixel(i*2, j*2),
                              p2 = (i - bmp.Width > 1) ?
                                bmp.GetPixel(i*2+1, j*2) :
                                bmp.GetPixel(i*2, j*2);
                        int r = (p1.R+p2.R)/2,
                            g = (p1.G+p2.G)/2,
                            b = (p1.B+p2.B)/2;
                        rgbs[i * j * 3 + i * 3 + 0] = Convert.ToByte(r);
                        rgbs[i * j * 3 + i * 3 + 1] = Convert.ToByte(g);
                        rgbs[i * j * 3 + i * 3 + 2] = Convert.ToByte(b);
                     }
                System.Runtime.InteropServices.Marshal.Copy(rgbs, 0, ptr, bytes);
                nbm.UnlockBits(bmd);
            gr.DrawImage(nbm, new Point(bmp.Width + 3, 0));
            }
            catch (Exception) { }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2011, 18:02
Ответы с готовыми решениями:

Методы сжатие изображения на NET?
Доброго времени суток! Мне понадобилось хранить на удаленном сервере фотографии. Места очень...

Сжатие и расжатие изображения .bmp благодаря алгоритмам JPEG/JPEG2000
Доброго времени суток! У меня по сути есть программа в которой открывается изображение формата BMP...

"лестницы" "мерцание" изображения в играх с включенным сглаживанием на макс
Вообщем то вопрос в теме, в чем может быть дело, все настройки выкручены на максимум а лестницы не...

сжатие изображения
хочу написать программку на C++ , желательно C++ Builder 6 которая сжимает изображение и...

2
Почетный модератор
21471 / 9155 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
16.12.2011, 18:18 2
C#
1
gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
1
19 / 17 / 5
Регистрация: 06.09.2011
Сообщений: 51
17.12.2011, 10:07  [ТС] 3
благодарю
еще хотелось бы узнать, где ошибка в ^
0
17.12.2011, 10:07
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2011, 10:07
Помогаю со студенческими работами здесь

Сжатие изображения
Не сжимаются изображения, ткните пожалуйста меня носом в ошибку, код : if (filesize($path) &gt;...

Сжатие изображения
У меня есть массив байт изображения. Изображение в ARGB формате. Размер известен и постоянен 256 на...

Сжатие изображения у TSpeedButton
Нужно поставить изображение 24х24. Такое имеется, но при загрузке оно почему то как-то по своему...

LZW сжатие изображения
Здравствуйте. Нашел на англоязычном форуме LZW сжатие изображения. Все в принципе хорошо, оно...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru