Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2010, 19:53   #1
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию Потеря качества изображения при копировании

В программе мне нужно скопировать часть картинки из одного Timage в другую и при этом теряется качество изображения.
Для пробы скопировал из одного Image в другой идентичный по размеру
Копирую слудующим образом:
Цитата:
Image2.Picture.Bitmap.width:=Image1 .width;
Image2.Picture.Bitmap.height:=Image 2.height;
Image2.Picture.Bitmap.Canvas.copyre ct(rect(0,0,Image2.width,Image2.hei ght),Image1.picture.bitmap.canvas,r ect(0,0,Image1.Picture.bitmap.width ,Image1.picture.Bitmap.height));
И изображение оказалось хуже по качеству, подскажите как можно повысить качество копирования.
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 28.01.2010, 20:29   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вы перед этим кодом добавьте еще:
Код:
Image2.width:=Image1.width;
Image2.height:=Image1.height;
А при изменении размера качество будет страдать, от этого никуда не денешься...
mihali4 вне форума Ответить с цитированием
Старый 09.02.2010, 14:09   #3
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Попробовал как вы сказали и качество всё равно ухудшилось.Так же я заметил что если в области откуда берём писать следующие
Цитата:
rect(0,0,Image1.Picture.bitmap.widt h ,Image1.picture.Bitmap.height));
То качество ухудшается
а если написать так
Цитата:
rect(0,0,Image1.width ,Image1.height));
То качество не меняется, но каритинка не растягивается на весь Image а виден только верхний левый угол.
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 09.02.2010, 18:54   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Какой размер исходной картинки ?
Каков ее настоящий размер ?
Какую часть ее вы копируете ?
Каков размер картинки, куда вы помещаете копию ?
Совпадает ли он с размером копируемой части ?
Если нет, то каков коэффициент изменения ?

Видите, сколько вопросов вы не раскрыли ?
Зато результат хотите получить, как от десятка экстрасенсов...
mihali4 вне форума Ответить с цитированием
Старый 09.02.2010, 19:31   #5
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

картинка идёт со сканера глубина 200dpi
размер картинки 21.47х29.57см
вес 11.52мб
она добавляется в Image1, затем оттуда сохраняется на диск, под именем image.bmp, а далее снова грузится в image1(Сохраняемая картинка и загруженная визуально абсолютно идентичны).
Для пробы я копирвоал всю картинку из Image1 в Image2. Размер Image2
как вы предложили ранее был указан програмно. При этом происходит сильная потеря качества. А если производить копирование частей картинки внутри самого Image1 качество не меняется.
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 09.02.2010, 19:55   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

что-то никак не возьму в толк смысл всех этих манипуляций... не хотите потерь, сохраняйте битовую матрицу (bmp) как она есть и уже все остальные действия пусть танцуют от нее...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.02.2010, 21:30   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
что-то никак не возьму в толк смысл всех этих манипуляций... не хотите потерь, сохраняйте битовую матрицу (bmp) как она есть и уже все остальные действия пусть танцуют от нее...
+ добавлю, уж если пошла речь о качестве, GDIовский CopyRect тут вообще не в тему. Легкий вариант это GDI+ + DrawImage + Interpolaition HighQualityBicubic (как то так)
BOBAH13 вне форума Ответить с цитированием
Старый 09.02.2010, 21:54   #8
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Вот скрин этого копирования чтобы было понятно что меня смущает в копировании...
(Слева картинка после сканирования, справа после копирования)
А вот почему так никак не пойму.
Изображения
Тип файла: jpg Копирование.jpg (34.5 Кб, 149 просмотров)
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 09.02.2010, 23:27   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,476
По умолчанию

кроме размеров у TBitmap еще есть

property PixelFormat: TPixelFormat;
property Palette: HPalette;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.02.2010, 01:18   #10
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Я когда копирую из одного Image в другой pixelsformat не изменяю. поэтом я думаю не в нём дело.
А вот что задаёт poperty Palette?
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 10.02.2010 в 01:25.
Herly вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при копировании файла (*.mpg) Marsel737 Общие вопросы Delphi 1 16.12.2009 11:06
Почему ошибка при копировании? valerij Microsoft Office Excel 8 02.05.2009 01:49
потеря параметров при вызове формы из dll... Roof Общие вопросы Delphi 4 22.08.2008 22:08
Потеря данных при изменении рамера раздела Drandulet Софт 5 06.07.2008 07:52
Потеря переменной при выходи из процедуры Kaz Помощь студентам 3 07.06.2007 03:24