Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
L6go1as
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 15
1

Порезать на ласкуты

01.09.2013, 12:26. Просмотров 380. Ответов 5
Метки нет (Все метки)

Приветствутвую!

Есть код:
Код
Bitmap bitmap = new Bitmap("edimge.bmp");
            int bitHeight = bitmap.Height;
            int bitWidth = bitmap.Width;
            Rectangle rect = new Rectangle(0, 0, bitWidth, bitHeight);
            PixelFormat format = bitmap.PixelFormat;
            
            for (int i = 0; i < 4; i++)
            {
                Bitmap target = new Bitmap(rect.Width - 16*i, rect.Height);

                Graphics g = Graphics.FromImage(target);
                g.DrawImage(bitmap, rect);
                g.Dispose();

                target.Save(i+".bmp");
             }
Итогом его работы являются 4 картнки: полная, 3/4 от полной, 1/2 от полной и 1/4 от полной.

Как подправить код, что бы программа нарезала 4 изображения по 1\4 от полной ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2013, 12:26
Ответы с готовыми решениями:

Порезать изображения на маленькие частицы?
Порезать Bitmap на маленькие частицы и сохранить их в папку или pictureList? Например на такие...

RichTextBox/textbox порезать строку на определенные промежутки
Вечер добрый, работяги:), нужен небольшой вопросик с реализацией. Есть 2 рич/текст бокса. В первый...

Порезать строку
Привет! Как убрать хвост строки(?), кол-во символов в хвосте постоянное, длина самой строки...

Как порезать скорость на порту?
Добрый день. На cisco 1921 хотел порезать скорость инета до 8 мбит на одном порту. Сделал...

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

5
kolorotur
Эксперт .NET
11206 / 9128 / 2304
Регистрация: 17.09.2011
Сообщений: 15,676
Завершенные тесты: 1
01.09.2013, 12:37 2
C#
1
2
3
4
5
6
7
            Rectangle rect = new Rectangle(0, 0, bitWidth / 4, bitHeight);
            PixelFormat format = bitmap.PixelFormat;
            
            for (int i = 0; i < 4; i++)
            {
                rect.X = i * rect.Width;
                Bitmap target = new Bitmap(rect.Width, rect.Height);
При создании новой картинки формат писькеля не забудьте такой же указать.
1
L6go1as
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 15
01.09.2013, 13:11  [ТС] 3
kolorotur, спасибо за быстрый ответ ... но собственно как указать формат внось созданной картинки ?
Пока ваш код не компилировал, но в ходе опытов с параметрами Rectangle, нашел, что если изменять bitWidth - идет лишь "сжатие" изображения по длине.

К сожалению с изображениями имею дело, лишь пару дней.

Добавлено через 7 минут
Все что приходит на ум, так это при создании пустого изображения указывать формат, к сожалению, пока не могу проверить код.

Но выглядеть думаю будет так:

Код
Bitmap target = new Bitmap(rect.Width, rect.Height, bitmap.PixelFormat);
0
kolorotur
Эксперт .NET
11206 / 9128 / 2304
Регистрация: 17.09.2011
Сообщений: 15,676
Завершенные тесты: 1
01.09.2013, 13:25 4
Цитата Сообщение от L6go1as Посмотреть сообщение
как указать формат внось созданной картинки ?
Третий параметр в конструкторе.

Цитата Сообщение от L6go1as Посмотреть сообщение
если изменять bitWidth - идет лишь "сжатие" изображения по длине.
Ой, мой косячек. Извините.

Вот так попробуйте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Bitmap bitmap = new Bitmap("edimge.bmp");
            int bitHeight = bitmap.Height;
            int bitWidth = bitmap.Width;
            Rectangle rect = new Rectangle(0, 0, bitWidth / 4, bitHeight);
            PixelFormat format = bitmap.PixelFormat;
            
            for (int i = 0; i < 4; i++)
            {
                rect.X = i * rect.Width;
                Bitmap target = new Bitmap(rect.Width, rect.Height, format);
                
                GraphicsUnit unit = GraphicsUnit.Pixel;
                using (var g = Graphics.FromImage(target))
                   g.DrawImage(bitmap, target.GetBounds(ref unit), rect, unit);
 
                target.Save(i+".bmp");
             }
1
L6go1as
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 15
01.09.2013, 14:31  [ТС] 5
Ооо благодарю!
Сяду изучать код
0
kolorotur
Эксперт .NET
11206 / 9128 / 2304
Регистрация: 17.09.2011
Сообщений: 15,676
Завершенные тесты: 1
01.09.2013, 14:40 6
L6go1as, учтите, что код предполагает, что ширина скармливаемой картинки кратна 4-м.
Если нет, то кусок правой части будет потерян.
0
01.09.2013, 14:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2013, 14:40

Кто может порезать полигоны?
Без заморочек, так, чисто функцией программы. Просто программ полно, а качать и ставить из - за...

Резка из CorelDraw - чем порезать макет?
Всем привет! Есть макет в формате cdr. Есть CorelDraw X6. Нужно макет порезать на составные...

Методы шифрования нужно порезать программу
Помогите надо в программе оставить только 2 типа шифрования: метод замены и метод цезаря,а...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru