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

При сохранении Bitmap не сохраняются внесенные в него изменения

24.06.2014, 00:22. Показов 3657. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю битмап для картинки, затем с помощью метода SetPixel меняю значения некоторых пикселей. При попытке сохранить
C#
1
image.Save("hide.jpg");
сохраняет исходную,а не измененную картинку. Хотя если внутри проги (не закрывая её) посмотреть значения пикселей, то они буду измененные. Можете подсказать в чем проблема, или плохо объяснил?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2014, 00:22
Ответы с готовыми решениями:

Не сохраняются внесенные данные при выходе из формы
как сделать так чтобы при выходе из формы данные которые я занёс сохранялись и не выдавало по английски сообщение . А то при нажатии на...

При компиляции не учитываются изменения, внесенные в проект
Скажите в чём может быть проблема,я запускаю отладку и почему-то вываливается смообщение ,которого уже нет в программе. Ошибок мне...

При следующем запуске формы в ней не отображаются внесенные ранее изменения
Жуткий трабл, который я первый раз вижу: есть таблица и есть соотв. форма. Так вот при занесении данных в форму (как мне казалось) они...

25
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
24.06.2014, 00:28
Mi8, показывайте код.
0
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 01:14  [ТС]
S_el, посмотрите, он сохраняет,но при попытке получить R выдает значение, которое даже близко не похоже, на заданное
Миниатюры
При сохранении Bitmap не сохраняются внесенные в него изменения   При сохранении Bitmap не сохраняются внесенные в него изменения  
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 01:19
Mi8, исключений не выбивает?
0
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 01:23  [ТС]
S_el, нет
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 01:43
Mi8, тогда выложите код,чтобы я мог его запустить.
0
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 02:03  [ТС]
S_el,
Кликните здесь для просмотра всего текста
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
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 only_r
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
            Bitmap image = new Bitmap(@"C:\bp4\save.bmp");
            image.SetPixel(10, 10, Color.FromArgb(100, 2, 2));
            image.Save("save.bmp");
            image.Dispose();
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Color pixel = new Color();
            Bitmap image = new Bitmap("save.bmp");
            pixel = image.GetPixel(10, 10);
            MessageBox.Show(Convert.ToString(pixel.R));
            image.Dispose();
        }
    }
}

Мне знакомый помогал, сказал что у него исключение общего вида возникает и посоветовал использовать .Dispose(), у него работает, у меня нет, все также выдает другие значения
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 02:25
Mi8, у вас что-то с обработчиком нажатия на кнопку.Или пересоздайте его,или создайте новый и все делайте в нем.
Попробуйте выполнить у себя,такой код(поместите в обработчик 1-ой кнопки):

C#
1
2
3
4
5
6
Bitmap image = new Bitmap(@"C:\bp4\save.bmp");
            image.SetPixel(10, 10, Color.FromArgb(100, 2, 2));
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            image.Save("save.bmp");
            Bitmap image2 = new Bitmap("save.bmp");
            MessageBox.Show(image2.GetPixel(10, 10).R.ToString());
вы увидите,что либо МэссэйджБоксов просто нет,либо числа одинаковые.
1
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 02:44  [ТС]
S_el, Создал новый проект, вставил Ваш код, первый меседж бокс показал 100, второй показал 9....
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 02:49
Mi8,попробуйте сменить картинку.
0
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 03:01  [ТС]
S_el, пробывал менять и картинку, и директорию, все также...
спасибо,что пытаетесь помочь
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 03:13
Mi8, тогда я не знаю в чем дело
Попробуйте определить на каком этапе сбоит,сохранения или изменения:
C#
1
2
3
4
5
6
7
8
Bitmap image = new Bitmap("E:/картинки/2H.png");
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            image.SetPixel(10, 10, Color.FromArgb(100, 2, 2));
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            image.Save("E:/картинки/save.png");
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            Bitmap image2 = new Bitmap("E:/картинки/save.png");
            MessageBox.Show(image2.GetPixel(10, 10).R.ToString());
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
25.06.2014, 03:13
Mi8, тогда я не знаю в чем дело
Попробуйте определить на каком этапе сбоит,сохранения или изменения:
C#
1
2
3
4
5
6
7
8
Bitmap image = new Bitmap("E:/картинки/2H.png");
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            image.SetPixel(10, 10, Color.FromArgb(100, 2, 2));
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            image.Save("E:/картинки/save.png");
            MessageBox.Show(image.GetPixel(10, 10).R.ToString());
            Bitmap image2 = new Bitmap("E:/картинки/save.png");
            MessageBox.Show(image2.GetPixel(10, 10).R.ToString());
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.06.2014, 10:19
Mi8, так попробуйте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Drawing;
 
namespace ConsoleApplication34
{
    class Program
    {
        static void Main()
        {
            using (Bitmap image = new Bitmap(@"C:\bp4\save.bmp"))
            {
                using (var g = Graphics.FromImage(image))
                {
                    g.FillRectangle(Brushes.Beige, 0, 0, image.Width / 2, image.Height / 2);
                }
                image.Save("save.bmp"); 
            }
        }
    }
}
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.06.2014, 12:07
Цитата Сообщение от Mi8 Посмотреть сообщение
Создал новый проект, вставил Ваш код, первый меседж бокс показал 100, второй показал 9....
Сдается мне, хоть картинка у вас и называется C:\bp4\save.bmp, на деле там может быть какой-нибудь джипег, который при вызове Save подрубает алгоритм сжатия, тем самым изменяя значение установленного программно пикселя.
Попробуйте сохранить измененную картинку так:
C#
1
image.Save("save.bmp", ImageFormat.Bmp);
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.06.2014, 14:23
C#
1
2
3
4
    public void Save(string filename)
    {
      this.Save(filename, this.RawFormat);
    }
Добавлено через 2 минуты
хотя хрен знает, что там в этом rawformat... Я гуиды плохо читаю
0
1 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 12
25.06.2014, 17:31  [ТС]
Спасибо за ответы, решил проблему кардинально, достал старый системный блок, установил там студию, там все пашет нормально
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.06.2014, 17:39
Цитата Сообщение от Mi8 Посмотреть сообщение
решил проблему
Это не решение проблемы, а аналог "когда я закрываю глаза, весь мир перестает существовать".
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.06.2014, 17:55
kolorotur, ну может в компе дело. Я помню, был элементарный код, но из-за каких-то совпадений настроек на моем компе код не работал, хотя везде в других местах исполнялся. По разному бывает.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.06.2014, 18:21
Цитата Сообщение от Psilon Посмотреть сообщение
ну может в компе дело.
Так кто ж спорит.
Но это же самая мякотка — узнать в чем именно дело!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2014, 18:21
Помогаю со студенческими работами здесь

Ошибка при сохранении BitMap
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type ...

Данные внесенные в реестр windows не сохраняются
Перенесено из https://www.cyberforum.ru/windows7/thread1594374.html Не стал создавать новую тему, столкнулся с такой проблемкой, создаю...

Не сохраняются внесенные записи в БД после окончания компиляции
Использую Studio 2017 RC и MSSQLSERVER 2016. Делаю диплом на WPF, в качестве работы с БД юзаю EDM-модель и EF. После запуска приложения...

A generic error occurred in GDI+." при сохранении Bitmap
Доброго времени суток. Помогите, пожалуйста разобраться: Пишу консольное приложение, открываю картинку .bmp в Bitmap, модернизирую и...

Bitmap объект при сохранении в файл не сохраняет новое значение DPI - пиксели на дюйм
Коллеги, подскажите новичку: Bitmap bmp = new Bitmap(@"d:\rr0\rr.jpg"); bmp.SetResolution(новая_DPI, новая_DPI); ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru