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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2009, 01:35   #1
Obender13
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 17
По умолчанию Качество изображения!

Здравствуйте, столкнулся с такой проблемой мне нужно было для создание программы "по созданию прикольных аватарок" склеить три изображения в одно, это благодаря одному человеку с этого форума, которому я очень благодарен получилось, но качество нового изображения оставляет желать лучшего, мне требуется срочно решить данную проблему с качеством, прошу помощи.

PS: Изображение после склеивание какоето размытое вот, такое замечал когда через паинт картинки открывал,редактировал, а потом сохранял.

Последний раз редактировалось Obender13; 13.08.2009 в 02:02.
Obender13 вне форума Ответить с цитированием
Старый 13.08.2009, 08:29   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

можете выложить ваши картинки?
SERG1980 вне форума Ответить с цитированием
Старый 13.08.2009, 10:55   #3
Obender13
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 17
По умолчанию

да конечно, вот картинка, которая получается после склеивания из 3 в одну http://www.programmersforum.ru/attac...1&d=1250146441

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

Код:
procedure TForm1.Button4Click(Sender: TObject);
var S,D:TRect;
begin
Image4.Width:=Image1.Width;
Image4.Height:=Image1.Height+Image2.Height+Image3.Height;
D.Left:=0;
D.Top:=0;
S:=D;
S.BottomRight.X:=Image1.Picture.Width;
S.BottomRight.Y:=Image1.Picture.Height;
D.BottomRight.X:=Image1.Width;
D.BottomRight.Y:=Image1.Height;
Image4.Canvas.CopyRect(D,Image1.Canvas,S);
S.BottomRight.X:=Image2.Picture.Width;
S.BottomRight.Y:=Image2.Picture.Height;
D.Top:=Image1.Height;
D.BottomRight.Y:=D.BottomRight.Y+Image1.Height;
Image4.Canvas.CopyRect(D,Image2.Canvas,S);
S.BottomRight.X:=Image3.Picture.Width;
S.BottomRight.Y:=Image3.Picture.Height;
D.Top:=Image1.Height+Image2.Height;
D.BottomRight.Y:=D.BottomRight.Y+Image2.Height;
Image4.Canvas.CopyRect(D,Image3.Canvas,S);



end;
Изображения
Тип файла: jpg после.jpg (12.9 Кб, 186 просмотров)

Последний раз редактировалось Obender13; 13.08.2009 в 10:58.
Obender13 вне форума Ответить с цитированием
Старый 13.08.2009, 15:48   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в аське уже поговорил с ним(я тот самый человек)

вот испраавил свой код:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var D:TRect;
begin
 Image4.Width:=Image1.Width;
 Image4.Height:=Image1.Height+Image2.Height+Image3.Height;
 D.Left:=0;
 D.Top:=0;
 D.BottomRight.X:=Image1.Width;
 D.BottomRight.Y:=Image1.Height;
 Image4.Canvas.StretchDraw(D,Image1.Picture.Bitmap);
 D.Top:=Image1.Height;
 D.BottomRight.Y:=D.BottomRight.Y+Image2.Height;
 Image4.Canvas.StretchDraw(D,Image2.Picture.Bitmap);
 D.Top:=Image1.Height+Image2.Height;
 D.BottomRight.Y:=D.BottomRight.Y+Image3.Height;
 Image4.Canvas.StretchDraw(D,Image3.Picture.Bitmap);
end;
пусть будет на форуме
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.08.2009, 07:59   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Если можно выложите несклеенные исходные картинки.
SERG1980 вне форума Ответить с цитированием
Старый 14.08.2009, 13:08   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

SERG1980, тему уже можно закрывать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.08.2009, 01:13   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Функция StretchBlt (+ опция Halftone) из винАпи качественнее масштабирует чем StretchDraw. Если нужно кач-во повыше, используйте лучше ее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 18.08.2009, 09:57   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Обнаруженно:
Код:
  SetStretchBltMode(Canvas.Handle, HALFTONE);
  StretchBlt(Canvas.Handle, 0, 0, 1024, 1024, Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, SRCCOPY);
Переделаете под себя.

StretchBlt
SetStretchBltMode

Последний раз редактировалось Alter; 18.08.2009 в 09:59.
Alter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как улучшить качество скриншота Arkuz Мультимедиа в Delphi 6 10.03.2009 18:52
Как можно улучшить эффективность и качество ПП? Evgenii Помощь студентам 5 29.01.2009 16:22
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Качество печати Македонский Общие вопросы Delphi 2 14.01.2008 22:46