2 / 2 / 0
Регистрация: 27.11.2019
Сообщений: 26
1

Низкое качество изображения при использовании CopyRect ()

02.09.2020, 20:35. Показов 447. Ответов 7
Метки нет (Все метки)

Всем привет. Такая ситуация. Гружу файл с картинкой на Image2, копирую фрагмент и размещаю на Image1. Качество фрагмента при этом ужасное. Как исправить?
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
   OpenPictureDialog1->Execute();//открываем окно выбора файла
   //выбираем файл и размещаем на Image2
   Image2->Picture->Bitmap->LoadFromFile( OpenPictureDialog1->FileName );
   Image2->Picture->Bitmap->PixelFormat=pf32bit;
   // создаем объект класса Graphics::TBitmap
   Graphics::TBitmap *Bit = new Graphics::TBitmap;
      Bit->PixelFormat=pf32bit;
      //задаем размер
      Bit->Width = 400;
      Bit->Height = 400;
   //выбираем координаты откуда и куда копировать
   TRect tRectFrom(0,123,595,719);
   TRect tRectTo(0,0,400,400);
   //копируем фрагмент изображения на Image2 в объект
   Bit->Canvas->CopyRect(tRectTo, Image2->Canvas, tRectFrom);
   Image2->Transparent=true;
   Image1->Picture->Bitmap->PixelFormat=pf32bit;
   //размещаем фрагмент на Image1
   Image1->Canvas->StretchDraw(Rect(0,0,400,400),Bit);
   delete Bit;
}
А вообще цель всех этих движений в том, что бы можно было открыть файл с разрешением 842х595 пикселей обрезать верх и низ(595х595) и получить центральную часть изображения с размерами 400х400.
Да, работаю в C++ Builder 6
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2020, 20:35
Ответы с готовыми решениями:

При использовании CopyRect для вырезания части PNG, качество и уровень прозрачности пропадает
Возникли трудности при использовании PNG файлов. Дело такого рода. Есть PNG тайл на котором...

Будет ли нормальное качество изображения при использовании hdmi - vga конвертера ?
Собираюсь меня видеокарту. Присмотрел 1060 GTX. Но на ней нету vga разъёма, а у меня старый...

Низкое качество записи потока
Приветствую всех, друзья. Код сочинил по мотивам этих источников: Отсюда И отсюда В...

Как скопировать кусочек изображения из Image1->Image2 при помощи copyrect?
парни объясните как скопировать кусочек изображения из Image1->Image2 при помощи copyrect? или...

7
Нарушитель
8388 / 4391 / 1009
Регистрация: 12.03.2015
Сообщений: 20,566
02.09.2020, 21:09 2
Не используй метод StretchDraw().
0
2 / 2 / 0
Регистрация: 27.11.2019
Сообщений: 26
02.09.2020, 21:17  [ТС] 3
Цитата Сообщение от Verevkin Посмотреть сообщение
Не используй метод StretchDraw().
Я пробовал Draw(). Пробовал не выводить фрагмент на Image1, а просто сохранять в файл(Bit->SaveToFile( OpenPictureDialog1->FileName ). Качество не лучше. Что посоветуете?
0
Нарушитель
8388 / 4391 / 1009
Регистрация: 12.03.2015
Сообщений: 20,566
02.09.2020, 21:34 4
Цитата Сообщение от AlexDX740 Посмотреть сообщение
Что посоветуете?
C++
1
bitmap_dest->Canvas->CopyRect(dest_rect, bitmap_source->Canvas, source_rect)
0
2 / 2 / 0
Регистрация: 27.11.2019
Сообщений: 26
02.09.2020, 21:46  [ТС] 5
Это я пробовал. Image1->Canvas->CopyRect(tRectTo, Image2->Canvas, tRectFrom); Качество не меняется. Мне не советовали использовать CopyRect() напрямую, так как не поддерживает масштабирования.
0
Нарушитель
8388 / 4391 / 1009
Регистрация: 12.03.2015
Сообщений: 20,566
02.09.2020, 23:16 6
Цитата Сообщение от AlexDX740 Посмотреть сообщение
Качество не меняется.
А ты чего хотел? Чтобы оно улучшилось? Так не бывает.
-----
Цитата Сообщение от AlexDX740 Посмотреть сообщение
Мне не советовали использовать CopyRect() напрямую, так как не поддерживает масштабирования.
Я не понял, тебе надо копировать или масштабировать? Это ж 2 разные операции.
0
2 / 2 / 0
Регистрация: 27.11.2019
Сообщений: 26
03.09.2020, 14:11  [ТС] 7
Цитата Сообщение от Verevkin Посмотреть сообщение
Сообщение от AlexDX740
Качество не меняется.
А ты чего хотел? Чтобы оно улучшилось? Так не бывает.
Я наверное неправильно выразился. Качество изображения при копировании резко ухудшается
Низкое качество изображения при использовании CopyRect ()


Цитата Сообщение от Verevkin Посмотреть сообщение
Я не понял, тебе надо копировать или масштабировать? Это ж 2 разные операции.
Цитата Сообщение от AlexDX740 Посмотреть сообщение
А вообще цель всех этих движений в том, что бы можно было открыть файл с разрешением 842х595 пикселей обрезать верх и низ(595х595) и получить центральную часть изображения с размерами 400х400.
Т.е. мне нужно обрезать и масштабировать.
0
2 / 2 / 0
Регистрация: 27.11.2019
Сообщений: 26
05.09.2020, 21:08  [ТС] 8
Нашел примерное решение здесь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2020, 21:08
Помогаю со студенческими работами здесь

на записи получается очень низкое качество
У меня звуковая карта Realtek ALC850, должна вроде бы быть хорошей для записи. Я пишу через...

Низкое качество графики в браузерах после переустановки Windows 7
Добрый день. Недавно переустановил систему Windows 7. Графика на рабочем столе,в...

Качество при смене изображения
Добрый день! Есть код: <div class="img"></div> .img{ width:200px; height:150px; ...

Dell Падает качество изображения при работе от батареи
В чем может быть проблема? Ноутбук отлично работает от сети. Но стоит вытащить зарядку -...

Максимальное разрешение и качество от возможного у вебкамеры при сохранении изображения
Нужно написать приложение, которое будет показывать видеопоток с вебкамеры и делать скриншоты при...

Добавление изображения при использовании FD
Еще раз здравствуйте. В проект FD я добавил картинку, как ее вывести на экран? Заранее спасибо. В...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru