PDA

View Full Version : تبديل عكس به ماتريس



omidan321
پنج شنبه 16 آذر 1391, 17:56 عصر
سلام من مخام یه عکسو به ماتریس n*n تبدیل کنم کسی میتونه کمکم کنه ؟ من تازه برنامه نویس رو شروع کردم تو رو خدا قطعه کد ندین ا اگه میدین توضیحشم بدین
منت میذارین سرم اگه تو این کار کمکم کنید

ayat255
پنج شنبه 16 آذر 1391, 18:19 عصر
فایلت رو بصورت باینری بخون بعد بریزش تو ماتریسی که میخوایی
فصل فایل های کتاب دلفی این توضیح رو داره

Ananas
جمعه 17 آذر 1391, 00:00 صبح
سلام.
از TBitmap دلفی استفاده کن و عکستو لود کن بعد با TBitmap.Canvase.Pixels درایه های ماتریس رو پر کن. مثال :

var
bitm : TBitmap;
i, j : Integer;
begin
bitm := TBitmap.Create;
bitm.LoadFromFile('D:\Wallpaper.bmp');
for j := 0 to bitm.Height - 1 do
begin
for i := 0 to bitm.Width - 1 do
begin
Matrix[i, j] := bitm.Canvas.Pixels[i, j];
end;
end;
end;

خود دستور Canvase.Pixels هم می تونه ماتریس فرض شه اگه کار خواصی (عملیات ماتریسی) با ماتریس نداری می تونی از همین Canvase.Pixels استفاده کنی.
این راه سادش بود ولی کمی کند، اگه از TBitmap.ScanLine استفاده کنی خط به خط اطلاعات رو می خونه و سرعتش بیشتر میشه.
اطلاعات پیکسل ها هم در حالت 32 بیتی از نوع عدد 32 بیتی بدون علامته که هر بایتش مربوط به یک کانال رنگ میشه.

omidan321
پنج شنبه 30 آذر 1391, 09:41 صبح
سلام اگه پسوند فايل عكس يه چيزه ديگه غير از بي ام پي باشه چي ؟ ساپورت ميكنه ؟

بهروز عباسی
پنج شنبه 30 آذر 1391, 11:31 صبح
درود به همه
دوست عزیز شما می تونی با برنامه نمونه ای قرار دادم فایلت رو به BMP تغییر بدی بعد ازش استفاده کنی.
موفق باشید.

منبع (http://www.delphipages.com/forum/showthread.php?t=145737)

Ananas
پنج شنبه 30 آذر 1391, 12:26 عصر
همچنین با استفاده از یک TImage هم بعضی فرمت ها رو می تونید لود کنید بعد کپی کنید تو یک TBitmap.