Главная страница
    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.039 c
3-1126028987
Ермак
2005-09-06 21:49
2005.10.16
ODBC & MS Access


3-1125486792
dreamse
2005-08-31 15:13
2005.10.16
Как установить права доступа к таблицам у пользователя ?


8-1116500972
poo
2005-05-19 15:09
2005.10.16
воспроизведение wave


4-1124218450
SuperMatser
2005-08-16 22:54
2005.10.16
Еще вопрос! Никак не получается найти ОКНО!


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