Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227

Сохранение TBitmap без потерь качества

23.10.2018, 23:49. Показов 988. Ответов 11
Метки bmp (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет !
Вопрос - есть

C++
1
2
Graphics::TBitmap *gBitmap = new Graphics::TBitmap();
gBitmap->PixelFormat=pf24bit;
в него пишутся данные и выводятся на экран

C++
1
Image1->Canvas->CopyRect(tRectTo,gBitmap->Canvas,tRectFrom);
далее gBitmap сохраняется в файл bmp

C++
1
2
3
String file_name2 = FormatDateTime("ddmmmyyyy_hhmmss",Now()) + ".bmp";
 
gBitmap->SaveToFile(GetCurrentDir() + "\\Graph\\" + file_name2);
Проблема в том что при сохранении качество картинки падает, те данные осредняются,
те картинка на экране более четкая чем сохраненная, как это можно объяснить ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2018, 23:49
Ответы с готовыми решениями:

Оцените сборку, может можно удешевить без потерь качества и производительности!
http://www.arsplus.ru/personal/basket.php В магазине Арсенал+. Компьютер нужен для игр, просмотра фильмов.

TJpegImage в TBitmap, и как можно использовать Canvas для JPEG без потери качества!
Доброго времени суток. Мне интересно если перегонять TJpegImage в TBitmap таким способом: uses Jpeg; ......................... ...

Сохранение картинок без потери качества
как сохранить качество при сохранении картинок, если при сохранении я меняю размер картинки. Например у меня имеется картинка 1024*768 с...

11
 Аватар для Скиф 90
12 / 10 / 5
Регистрация: 07.10.2018
Сообщений: 40
24.10.2018, 00:37
Я не представляю, каким образом битмап может ухудшить качество, если палитра (pixelformat) не меняется. Чем это можно объяснить? Тем,что мы не видим габариты (размеры) gBitmap и Image1. Возможно, есть разница, - записать Image->Canvas и Image->Picture->Bitmap->Canvas - я не знаю. Сравните прежде всего в графическом вьюере характеристики исходной и полученной картинки. Иначе всё это - ваше субъективное мнение (ни один суд присяжных не примет...).
0
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 00:41  [ТС]
Сравнивал конечно а как вы думаете выявляется разница ?
image1 меньше по размерам чем gBitmap те на экран по теории должно выводиться изображение хуже чем в файл а происходит наоборот.
Просто явно видно что происходит усреднение по точкам при записи в файл.
0
 Аватар для Скиф 90
12 / 10 / 5
Регистрация: 07.10.2018
Сообщений: 40
24.10.2018, 00:46
Постойте-постойте, а почему вы копируете в Image1, судя по представленному коду, а сохраняете всё же gbitmap? Как-то по фрагментам программы судить трудно, не видя целиком.
0
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 00:49  [ТС]
Вот два файла в архиве, экран.bmp - скрин с экрана, файл.bmp - тот же но сохраненный в полном размере.

Исходник это gbitmap, он используется и для вывода на экран для мониторинга а также для сохранения данных для дальнейшей обработки.
Вложения
Тип файла: rar graph.rar (457.2 Кб, 2 просмотров)
0
 Аватар для Скиф 90
12 / 10 / 5
Регистрация: 07.10.2018
Сообщений: 40
24.10.2018, 00:56
тогда ещё раз и помедленнее... .
Я вижу два файла: файл.bmp высотой 1594 пкс, и экран-тест.bmp, высотой 1041. Естественно, во втором часть полезной информации потеряна за счёт уплотнения. Вам не ясно, как это произошло, или в чём загвоздка?
0
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 01:08  [ТС]
По моему в файле файл.bmp произошла осреднение пикселей по сравнению с экран-тест.bmp разве не видите ?
В этом то и вся загвоздка ! А должно быть наоборот.
Если хотите можно файл.bmp преобразовать в высоту 1041 лучше он от этого не станет.
Изначальные данные в обеих файла одинаковые
0
 Аватар для Скиф 90
12 / 10 / 5
Регистрация: 07.10.2018
Сообщений: 40
24.10.2018, 01:10
Цитата Сообщение от whale2 Посмотреть сообщение
Если хотите можно файл.bmp преобразовать
Я просто хочу понять логику вопроса или проблемы - как хотите. Пока безрезультатно.
0
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 01:22  [ТС]
Похоже я понял в чем дело, при сжатии gbitmap в image на изображении возникали мелкие артефакты, которые принимали за повышенную детализацию
0
 Аватар для Скиф 90
12 / 10 / 5
Регистрация: 07.10.2018
Сообщений: 40
24.10.2018, 01:26
А я вам и говорил (про присяжных...)
1
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 01:27  [ТС]
Отлично вопрос решен, есть немного другой

делаем вывод gbitmap в image

Code
1
2
3
4
5
 
        TRect tRectFrom(0,0,1600,1600); 
        TRect tRectTo  (0,0, 1600, 1600);            
        Form4->Image1->Canvas->CopyMode=cmSrcCopy;
        Form4->Image1->Canvas->CopyRect(tRectTo,gBitmap->Canvas,tRectFrom);

при попытке заменить код выше на такой ничего не происходит

Code
1
BitBlt (Form4->Image1->Canvas->Handle, 0, 0, 1600, 1600, gBitmap->Canvas->Handle, 0, 0, SRCCOPY);
Добавлено через 1 минуту
Я сделал просто вывод в image часть gbitmap и изображения совпали
0
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
24.10.2018, 15:18  [ТС]
Неужели никто не сталкивался ? Вроде должно работать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.10.2018, 15:18
Помогаю со студенческими работами здесь

1 HDD на 3ТБ установки Windows 10 Как установить без разбития разделов без потерь ?
Здравствуйте, есть в наличии всего 1 HDD Размером на 3 ТБ уже как то умудрялся устанавливать на этот жёсткий диск разделяя на тома и...

Разветвитель без потерь
При подключении двух колонок к материнке через обычный раздвоитель теряется мощность.каким образом можно это исправить?

Алгоритмы сжатия без потерь
В общем какие есть популярные или не популярные алгоритмы сжатия информации без потерь. И их примеры реализации на делфи.

Как установить без потерь?
Доброго времени суток! Ситуация такая: имеется ноут под Win7 с двумя жесткими дисками, на который требуется установить Linux Mint...

Тихий звук без потерь
Подскажите, пожалуйста: 1. По каким критериям выбирать колонки, чтобы они, помимо прочего, могли воспроизводить звук на невысокой...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru