![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем привет.
Много всего написано но ничего не понятно... Есть картинка в файле. Нужно ее вывести на форму в размерах 40х50 без особой потери качества. Именно в сохранении качества собственно и вопрос. Спасибо. Код:
//*****Загрузить аватар***************
Memo := TMemoryStream.Create;
idHTTP1.Get('http://test.ru/res/img/avatar/'+Form1.ZQuery1.fieldbyname('avatar').AsString+'', memo);
idHTTP1.Disconnect;
Memo.SaveToFile('images\avatars\'+Form1.ZQuery1.fieldbyname('avatar').AsString);
memo.free;
//*************************************
avatar.Picture.LoadFromFile('images\avatars\'+Form1.ZQuery1.fieldbyname('avatar').AsString); |
|
#2
|
|||
|
|||
|
Ну, когда я делал такую штуку, то меня качество StretchDraw устроило. Там только надо аккуратно рассчитать размер новой картинки. Если такое качество не устроит, то где-то видел библиотеку, которая позволяет масштабировать картинку с применением разных фильтров. Правда тут такая штука, что нет фильтра, который тебе гарантирует наилучшее качество результата. В зависимости от самой картинки, лучший результат дают разные фильтры.
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
Дык ты пользуешься встроенным алгоритмом TImage. Он действительно дает на удивление фиговый результат. Я же говорю про ресайзинг "руками". Т.е. загрузил картинку в память, сразу ее переразмерил и сохранил в файл. Потом грузи из файла и без переразмеривания сразу показывай.
|
|
#5
|
||||
|
||||
|
если выставить режим HALFTONE для StretchBlt через SetStretchBltMode, то результат будет заметно лучше.
|
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Код:
SetStretchBltMode(Image.Canvas.Handle, halftone); StretchBlt(Image.Canvas.Handle, 0, 0, Image.Width, Image.Height, bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, srcCopy); |
|
#8
|
|||
|
|||
|
Цитата:
что такое bmp? Последний раз редактировалось chellas88, 14.01.2016 в 13:03. |
|
#9
|
||||
|
||||
|
к примеру объект TBitmap
|
|
#10
|
|||
|
|||
|
Цитата:
тоесть нужно 2 картинки (в оригинальном размере и маленькая)? |
|
#11
|
||||
|
||||
|
нет, достаточно одной оригинальной картинки.
|
|
#12
|
|||
|
|||
|
Цитата:
извиняюсь, но тогда зачем 2 объекта timage (image и bmp)? например мне нужно сделать маленьким обьект avatar(timage) как мне это написать? |
|
#13
|
||||
|
||||
|
см. описание функции StretchBlt и станет все ясно.
первый параметр на чем рисуется изображение, шестой что рисуется. отсюда и два объекта. |