Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
 Аватар для SnoW30
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 5

Изменение разрешения изображения

03.07.2013, 23:44. Показов 7546. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изменяю разрешение изображения с помощью SetResolution, потом сохраняю в Jpeg. В итоге разрешение получается "квадратное", т.е. хотел 1366 на 768,а получил 1366 на 1366. проверял разрешение изображения после SetResolution, там, вроде бы, все правильно.
Кликните здесь для просмотра всего текста
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Bitmap j;
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult rsl = MessageBox.Show("Вы действительно хотите выйти из приложения?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rsl == DialogResult.Yes)
            {
                Application.Exit();
            }
        }
 
        private void bMPToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadImage(false);
        }
 
        private void jPEGToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadImage(true);
        }
 
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            LoadImage(false);
        }
 
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            LoadImage(true);
        }
        private void LoadImage(bool jpg)
        {
            openFileDialog1.InitialDirectory = "c:";
            if (jpg)
            {
                openFileDialog1.Filter = "image (JPEG) files (*.jpg)|*.jpg|All files (*.*)|*.*";
            }
            else
            {
                openFileDialog1.Filter = "image (BMP) files (*.bmp)|*.bmp|All files (*.*)|*.*";
 
            }
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    j = (Bitmap)Image.FromFile(openFileDialog1.FileName);
                    pictureBox1.Size = new Size(j.Width, j.Height);
                    pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Не удалось загрузить файл: " + ex.Message);
                }
 
            }
        }
        private void changeSizeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if ((toolStripHeigth.Text == "") & (toolStripWidth.Text == ""))
            {
                MessageBox.Show("Enter width and heigth of picture!");
            }
            else
            {
                Bitmap Image = new Bitmap(j, Convert.ToInt32(toolStripWidth.Text), Convert.ToInt32(toolStripHeigth.Text));
                j = Image;
                pictureBox1.Size = new Size(Image.Width, Image.Height);
                pictureBox1.Image = Image;
            }
        }
        private void changeAllowingToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if ((toolStripTextBoxHeight.Text == "") & (toolStripTextBoxWidth.Text == ""))
            {
                MessageBox.Show("Enter width and heigth of picture!");
            }
            else
            {
                j.SetResolution(Convert.ToInt32(toolStripTextBoxWidth.Text), Convert.ToInt32(toolStripTextBoxHeight.Text));
                pictureBox1.Image= j;
            }
        }
 
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                SaveFileDialog savedialog = new SaveFileDialog();
                savedialog.Title = "Сохранить картинку как ...";
                savedialog.OverwritePrompt = true;
                savedialog.CheckPathExists = true;
                savedialog.Filter = "Image Files(*.BMP)|*.BMP|Image Files(*.JPG)|*.JPG|All files (*.*)|*.*";
                if (savedialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                      j.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    catch
                    {
                        MessageBox.Show("Impossible to save image", "FATAL ERROR",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
    }
}


Добавлено через 1 минуту
private void changeAllowingToolStripMenuItem_Click_1 - изменение разрешения
private void saveToolStripMenuItem_Click -сохранение
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2013, 23:44
Ответы с готовыми решениями:

Запретить изменение разрешения консоли
Мне надо сделать так, чтоб консоль была только одного одного размера и её размер нельзя было изменять.

Изменение разрешения изображения.
Подскажите, уже долго мучаюсь над данным вопросом. Image->Height=*; Image->Width=*; Image->Stretch=true;...

Как происходит изменение разрешения изображения (bmp)
Мне нужно изменить разрешение изображения файла bmp, но я не понимаю как выбирается цвет для новых пикселей изображения. Как я понял на...

11
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
04.07.2013, 23:13
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
{
    Bitmap btm = null;
    var ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
        btm = new Bitmap(Image.FromFile(ofd.FileName), new Size(1366, 768));
    var sfd = new SaveFileDialog();
    if (sfd.ShowDialog() == DialogResult.OK)
        btm.Save(sfd.FileName);
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.07.2013, 23:15
_lunar_, А если (ofd.ShowDialog() != DialogResult.OK), то что?
0
 Аватар для SnoW30
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 5
04.07.2013, 23:19  [ТС]
_lunar_, ммм... тут же размер изменяется, а мне разрешение надо
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
04.07.2013, 23:19
Psilon
NullReferenceException (Ссылка на объект не указывает на экземпляр объекта).
Только смысл сообщения я не понял?

Не по теме:

SnoW30, не переводите в следующий раз слово Size когда будете писать комментарий :)

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.07.2013, 23:21
_lunar_, смысл: ошибки это плохо.

Добавлено через 11 секунд
SnoW30, и в чем по-вашему разница между размером изображения в пикселях и разрешением?
1
04.07.2013, 23:23

Не по теме:

Psilon, ну обработку исключений сам ТС сможет сделать, я лишь дал ответ на вопрос :)

0
 Аватар для SnoW30
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 5
04.07.2013, 23:30  [ТС]
Psilon, _lunar_, насколько я знаю размер и разрешение разные вещи, для примера, откройте любую картинку через paint потом свойства, там отдельно размер и разрешение, в других редакторах так же. А изменение размера у меня уже имеется в другом методе.

Добавлено через 2 минуты
вот прога: Summer.rar
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.07.2013, 23:30
SnoW30, не надо отсылать к редакторам. Скажите, в чем разница.
0
 Аватар для SnoW30
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 5
04.07.2013, 23:31  [ТС]
Psilon, Помимо измерения в пикселях или абсолютного размера также его можно характеризовать физическими размерами. Стоит различать эти два понятия.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
04.07.2013, 23:35
SnoW30, вы сами по моему запутались, пишете
Цитата Сообщение от SnoW30 Посмотреть сообщение
В итоге разрешение получается "квадратное", т.е. хотел 1366 на 768,а получил 1366 на 1366.
и тут же отсылаете к свойствам изображения, в котором написано совсем другое
Миниатюры
Изменение разрешения изображения  
0
 Аватар для SnoW30
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 5
05.07.2013, 00:33  [ТС]
http://www.pixelbox.ru/blog/fonts/572.html

Добавлено через 1 минуту
_lunar_, ну, ширина и высота одна, а разрешение другое
В чем я не прав? Плюс у меня в техническом задании написано:"написать методы изменения разрешения и размера изображения".

Добавлено через 1 минуту
К тому же размер изменяется довольно легко, а вот с разрешением не то получается.

Добавлено через 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
private void changeAllowingToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if ((toolStripTextBoxHeight.Text == "") & (toolStripTextBoxWidth.Text == ""))
            {
                MessageBox.Show("Enter width and heigth of picture!");
            }
            else
            {
                j.SetResolution(Convert.ToInt32(toolStripTextBoxWidth.Text), Convert.ToInt32(toolStripTextBoxHeight.Text));
                pictureBox1.Image= j;
            }
        }
 
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                SaveFileDialog savedialog = new SaveFileDialog();
                savedialog.Title = "Сохранить картинку как ...";
                savedialog.OverwritePrompt = true;
                savedialog.CheckPathExists = true;
                savedialog.Filter = "Image Files(*.BMP)|*.BMP|Image Files(*.JPG)|*.JPG|All files (*.*)|*.*";
                if (savedialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                      j.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    catch
                    {
                        MessageBox.Show("Impossible to save image", "FATAL ERROR",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
Добавлено через 22 минуты
Небольшой косячок был
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void changeAllowingToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if ((toolStripTextBoxHeight.Text == "") & (toolStripTextBoxWidth.Text == ""))
            {
                MessageBox.Show("Enter width and heigth of picture!");
            }
            else
            {
                Bitmap Image2 = new Bitmap(j);
                Image2.SetResolution(Convert.ToInt32(toolStripTextBoxWidth.Text), Convert.ToInt32(toolStripTextBoxHeight.Text));
                j = Image2;
                pictureBox1.Image= j;
            }
        }
Добавлено через 4 минуты

вот, на первой картинке менял разрешение, на второй размер.

Добавлено через 5 минут

Исходное изображение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2013, 00:33
Помогаю со студенческими работами здесь

Изменение разрешения (dpi), высоты и ширины изображения (.jpg) по заданному пути
Как изменить программным путем разрешение (dpi), высоту и ширину изображения (.jpg) по заданному пути на VB (System.Windows.Forms). ...

Увеличение разрешения изображения
Господа! необходимо увеличить разрешение изображения ( методом ближайшего соседа, интерполяции или субпиксельного сканирования). я...

Конвертация разрешения изображения
День добрый. Имею изображение с исходным разрешением 2475х3500. Очень нужно получить в 1920х1080, но попробовав несколько программ для...

Зависимость изображения и разрешения экрана
Здравствуйте! Проблема следующая: написана программа-заставка. В центре формы помещён PictureBox, в него загружено изображение 300 на...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru