Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1127653321
kami
2005-09-25 17:02
2005.10.16
Невозможно установить иконку формы и приложения


2-1127120812
Андрей гость
2005-09-19 13:06
2005.10.16
сложный запрос с заменой символов


14-1127480934
ПЛОВ
2005-09-23 17:08
2005.10.16
посоветуйте


1-1127703560
Laymer
2005-09-26 06:59
2005.10.16
Запрет закрытие программы.


14-1127824913
Knight
2005-09-27 16:41
2005.10.16
Какая-то чертовщина с ноутбуком...