|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Качество уменьшенной картинки (Stretch)
Всем привет.
Много всего написано но ничего не понятно... Есть картинка в файле. Нужно ее вывести на форму в размерах 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 и станет все ясно.
первый параметр на чем рисуется изображение, шестой что рисуется. отсюда и два объекта. Пишу программы за еду. __________________ |