Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];

Вниз

Нужна помощь по работе с FastLib   Найти похожие ветки 

 
ma5ter ©   (2006-07-02 19:37) [0]

Библиотека хорошая. Вот только примеров маловато будет. Да и дока оставляет жедать лучшего. В общем у меня задача увеличить часть картинки (или всю картинку). Как сделать? Нужен очень простой и понятный пример по работе с картинкой (яркость, контрастность, размер, смещение и пр.) А то получается, что компонента здравая, а чтоб понять что в ней есть надо код перелопатить. Есть наверное стандартные алгоритмы работы с ней.


 
Sapersky   (2006-07-03 03:53) [1]

Увеличение/уменьшение - FastSize.pas -> FastResize/Bilinear.
Перед вызовом задать нужные размеры результирующей картинке (SetSize). У исходной, само собой, они тоже должны быть ненулевые.
Яркость/констрастность - FastFX.pas -> Lightness/Contrast.
Работа с фрагментом картинки без копирования:
Part := TFastDIB.Create;
Part.SetSubset(SrcImage, Left, Top, Width, Height);
// нужные операции с Part
Part.Free;
Относительно яркости/контрастности есть такая особенность - у 8-битных картинок она применяется к палитре, т.е. всё равно подействует на всю картинку.


 
ma5ter ©   (2006-07-03 17:40) [2]

Спасиб. Да понять не мог, почему делаю как в примере - 50х50 то получится то нет. Вылетает по ошибке в случае обращения к памяти по такому-то адресу (Bilinear, FastResize).Вставляю пример в свой код (отдельной процедурой) - работает на-ура. Идеологию примерно понял.
Есть чуток вопросов по работе с библиотекой:
1) Обязательно ли выводить картинку на TImage? Можно ли выводить на другой контекст отображения? Как это сделать?
2) Что такое freeHandle? Я понимаю, что пока я его не сделаю false картинку забрать не получится. Что при этом происходит?
3) Почему при смещении картинки она циклически появляется с другой стороны? Можно ли этого избежать?
4) Что делает convert и makecopy? Почему при конверсии в больший размер картинка не конвертируется, а проявляется своеобразным образом - черное поле и внизу две копии исходного изображения плохого качества?


 
Sapersky   (2006-07-04 12:49) [3]

1) Например, на форму: FDIB.Draw(Form1.Canvas.Handle, 0, 0), аналогично на PaintBox. Делать это желательно в OnPaint формы/PaintBox"а.

2) Если это относится к фрагменту
 Tmp.FreeHandle:=False;
 Image.Picture.Bitmap.Handle:=Tmp.Handle;
 Tmp.Free;
 Image.Refresh;
FreeHandle:=False в данном случае делается для того, чтобы при дальнейшем уничтожении TFastDIB"а его handle (т.е. фактически сама картинка в представленнии Windows) "остался в живых", т.к. он будет использоваться в TImage и - надеюсь - уничтожится при его освобождении.
Смысл всех этих манипуляций - загнать TFastDIB в TImage без копирования картинки (копируется только Handle).
Можно и с копированием, это более ресурсоёмко, но проще для понимания:
With Image.Picture do begin
 Bitmap.Width := Tmp.Width; Bitmap.Height := Tmp.Height;
 Tmp.Draw(Bitmap.Canvas.Handle, 0, 0);
end;
Tmp.Free;

3) Смещение - через Transform? Ну, видимо, цикличность там сделана специально. Вообще Transform больше для вращения/масштабирования, чем для смещения. Если нужно смещением - проще нарисовать картинку конкретно в нужном месте FDIB.Draw(DC, X, Y).

4) Convert преобразует глубину цвета, а не размер картинки. Размеры должны быть одинаковыми.
MakeCopy - создаёт картинку такого же размера и опционально копирует содержимое.



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.049 c
1-1168682116
Skopaas
2007-01-13 12:55
2007.03.04
Выходной параметр процедуры


15-1170942307
Evgeniy.G
2007-02-08 16:45
2007.03.04
Delphimaster.ru - превращение в "Мопед"


2-1171025042
Tifon
2007-02-09 15:44
2007.03.04
Сравнение строк


15-1170938697
allucard
2007-02-08 15:44
2007.03.04
Win2000 и подключения(удалённая модератором трабла).


15-1171022077
Rouse_
2007-02-09 14:54
2007.03.04
Ну че, признавайтесь - кто писал?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский