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

Вниз

Преобразование картинок   Найти похожие ветки 

 
Fostr   (2005-09-24 22:07) [0]

Здравствуйте! Есть две картики (Jpg). Моя задача сделать плавный переход одной картики в другую. С помощью доступа к пикселям (MyPic.Canvas.Pixels[x,y]) эта задача работает чрезвычайно медленно. Знаю, что ScanLine решает подобные проблемы со коростью. Вопрос: пожалуйста, подскажите как именно можно решить задачу с помощью ScanLine?


 
PAVIA ©   (2005-09-24 22:37) [1]

Запомни есть кнопка F1 Help называеться, по русски будет справка.
type
 TRGB=record r,g,b:byte; end;
 PRGBArray = ^TByteArray;
 TRGBArray = array[0..32767] of TRGB;
//...
var p:PRGBArray;
//...
//тут загрузка картинки преоброзование ее в BMP 24bit
//...

 for y := 0 to Bitmap.height -1 do
   begin
     P := Bitmap.ScanLine[y];
     for x := 0 to Bitmap.width -1 do
       begin
       P[x]-лежит цвет. Делаешь свои преоброзования.
       end;
   end;

ScanLine выигрывает за счет, того что каждый раз не нужно преводить координаты x,y в линейный адрресс используя медленную операцию умножения l=y*Bitmap.width +x.


 
Fostr   (2005-09-24 22:45) [2]

С английским у меня проблем нет, спасибо. Хелпом пользоваться умею, но любому иногда что-то бывает непонятным. В любом случае спасибо за разъянения.


 
MBo ©   (2005-09-25 07:26) [3]

В Статьи загляни


 
Fenik ©   (2005-09-25 10:56) [4]

http://delphibase.spb.ru/?action=viewfunc&topic=mediaimg&id=10300
http://www.delphimaster.ru/articles/pixels/index.html


 
GrayFace ©   (2005-09-25 19:52) [5]

PAVIA ©   (24.09.05 22:37) [1]
ScanLine выигрывает за счет, того что каждый раз не нужно преводить координаты x,y в линейный адрресс используя медленную операцию умножения l=y*Bitmap.width +x.

Вовсе нет. Как я помню, работа с пикселями в 100 раз медленнее, чем работа со Scanline"ом.


 
Sapersky   (2005-09-26 11:33) [6]

Из-за того, что при обращении к свойству Pixels вызываются Get/Set функции и ещё куча внутри них. Из-за преобразования цвета в к 24-битному формату, если на самом деле другой.
В FastLib ( http://prdownloads.sourceforge.net/skinner/FastLib.zip?download ) Pixels реализован как двумерный массив-указатель, для каждого формата отдельно, например, для 24 бит:

 TFColor = packed record
   b,g,r: Byte;
 end;

 TLine24   = array[Word]of TFColor;  PLine24   =^TLine24;
 TPixels24 = array[Word]of PLine24;  PPixels24 =^TPixels24;

 Pixels24:   PPixels24; // typed scanlines - Pixels24[y,x]: TFColor

И довольно шустро работает. Хотя Scanlines всё-таки быстрее.



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

Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.037 c
2-1127088899
antoxa2005
2005-09-19 04:14
2005.10.16
Всем вопросам вопрос. А как получить значения подписи полей в Acc


1-1127358717
Antonn
2005-09-22 07:11
2005.10.16
Регистрация программы в автозапуске


14-1127846871
syte_ser78
2005-09-27 22:47
2005.10.16
Посоветуйте программу.


2-1126672265
newgluk
2005-09-14 08:31
2005.10.16
D7+MSSQL


8-1116800582
ALL
2005-05-23 02:23
2005.10.16
Звуковой поток





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский