Главная страница
    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.46 MB
Время: 0.048 c
1-1127309912
Zander1
2005-09-21 17:38
2005.10.16
Изменение размеров формы


4-1124088075
Арсений
2005-08-15 10:41
2005.10.16
8 БИТ И ВСЕ, ВСЕ, ВСЕ…


14-1127133477
Антоний
2005-09-19 16:37
2005.10.16
WinXP и подключение к Win2003Server


2-1127396868
BFG9k
2005-09-22 17:47
2005.10.16
Справочная система из нескольких файлов


14-1127733767
Внук
2005-09-26 15:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский