View Full Version : تبدیل عکس bitmap یک بیتی به کد باینری
mahtab119
سه شنبه 25 مرداد 1390, 08:59 صبح
با سلام
من دنبال کدی هستم که بشود عکس های bmp یک بیتی نه 24 بیتی را به صورت کد باینری صفرو یک در آورد نه به صورت RGB
و بتوان اسکن عکس را هم در سطر انجام داد هم در ستون آیا کسی اطلاعاتی داره تو این زمینه؟
ممنون
یوسف زالی
سه شنبه 25 مرداد 1390, 13:10 عصر
سلام.
BitMap یک ماتریس دو بعدی در اختیار میگذاره.
مثال:
for j := 0 to Image1.Picture.Bitmap.Height -1 do
for i := 0 to Image1.Picture.Bitmap.Width -1 do
if Image1.Picture.Bitmap.Canvas.Pixels[i, j] <> clwhite then
Form1.Canvas.Pixels[i, j] := clblack;
mahtab119
چهارشنبه 26 مرداد 1390, 11:00 صبح
ممنون اما میشه کامل بنویسید بعد چه جور ذخیره کنیم داخل فایل متنی؟
یوسف زالی
چهارشنبه 26 مرداد 1390, 12:45 عصر
ببینید شما در همین حلقه اگر کد رنگ سیاه بود صفر بگذارید و اگر نه یک.
ذخیره در فایله دیگه.
کجاش دقیقا مشکل دارید؟
برای چگونگی کار با فایل یه سرچی بزنید.
mahtab119
پنج شنبه 27 مرداد 1390, 08:36 صبح
سلام دیروز اون پست را یکی از دوستام زده بود ممنون کد اولی کارما حل کرد.
برای عکس های سه رنگ و 7 رنگ باید چی کار کرد؟
mahtab119
شنبه 29 مرداد 1390, 10:13 صبح
من نهایتش می خوام یک فایل فلش ر ا تبدیل به کد باینری کنم چنین چیزی امکان دارد؟
یوسف زالی
شنبه 29 مرداد 1390, 11:00 صبح
منظورتون از کد باینری دقیقا چیه؟
مثال بزنید
mahtab119
یک شنبه 30 مرداد 1390, 08:44 صبح
کد باینری حالت 0و1 کامپیوتری
یوسف زالی
یک شنبه 30 مرداد 1390, 08:51 صبح
دوست من اینو که همه می دونن یعنی چی.
تمام چیزهایی که در کامپیوتر هست باینریه.
منظور شما از باینری چه برخوردی با اونه؟
مثال بگذارید.
BORHAN TEC
یک شنبه 30 مرداد 1390, 09:27 صبح
کد باینری حالت 0و1 کامپیوتری
دوست عزیز، من فکر می کنم شما با تعریف فایل باینری مشکل دارید. توجه داشته باشید که فایل های باینری تصویر دقیقی از فایل موجود در حافظه اصلی است که در حافظه جانبی ذخیره شده است. یعنی فایل های موسیقی، exe و ... همگی فایلهای باینری هستند ولی فایلهای متنی اینگونه نیستند.
یوسف زالی
یک شنبه 30 مرداد 1390, 14:38 عصر
شاهین جان فایلهای متنی هم همین جوری اند.
BORHAN TEC
دوشنبه 31 مرداد 1390, 15:51 عصر
شاهین جان فایلهای متنی هم همین جوری اند.
نه، اینگونه نیستند. میان فایلهای متنی و باینری تفاوتهای زیادی وجود دارد. فایلهای متنی تصویر دقیقی از شکل فایل موجود در حافظه اصلی نیست و برای ذخیره شدن آن در حافظه جانبی یکسری تبدیلات باید اتفاق بیفتد ولی در مورد فایلهای باینری این تبدیلات اتفاق نمی افتد.
یوسف زالی
سه شنبه 01 شهریور 1390, 09:01 صبح
مگر فایلهای متنی از یک سری کدهای متناظر با کاراکترها تشکیل نشده؟
مثلا برای A کد 65؟
خب همین 65 دقیقا ذخیره می شه دیگه.
میشه بفرمایید چه تبدیلی انجام میشه و مثال کوچکی هم بزنید؟
ممنون.
mahtab119
چهارشنبه 02 شهریور 1390, 12:47 عصر
سلام ممنون از همه شماها
ببینید مثل همون عکس که اول بار کد اون را قرار دادین من اومدم گفتم حالا اگه سفید بود 0 وگرنه 1 بگذارو تو یک فایل متنی ذخیره کردم و بعد حالا برای فایل فلش هم بخایم همین کار را انجام دهیم قاعدتا باید اول عکس هاش را اسنخراج کنیم بعد هر عکس را تبدیل کنیم آیا نکته خاصی خواهد داشت؟؟
BORHAN TEC
چهارشنبه 02 شهریور 1390, 13:53 عصر
مگر فایلهای متنی از یک سری کدهای متناظر با کاراکترها تشکیل نشده؟
مثلا برای A کد 65؟
خب همین 65 دقیقا ذخیره می شه دیگه.
میشه بفرمایید چه تبدیلی انجام میشه و مثال کوچکی هم بزنید؟
ممنون.
این موضوع همیشه به این سادگی ها هم نیست. برای اینکه این موضوع را بهتر درک کنید به مثال زیر توجه کنید:
همانطور که می دانید یک متغیر Integer فضایی معادل 4 بایت را اشغال می کند و می تواند اعدادی در محدوده تقریبی منفی 2 میلیار تا مثبت 2 میلیارد را در خود جای دهد.
2 میلیارد یعنی 2000000000. اگر این عدد را بخواهیم در یک فایل باینری ذخیره کنیم فقط 4 بایت را اشغال می کند ولی در فایل متنی چطور؟؟؟
عدد 2 میلیارد از 9 تا صفر و عدد دو تشکیل شده پس برای ذخیره آن در فایل متنی به 10 بایت نیاز داریم. واقعاً از این مثال چه نکته ای را می توان متوجه شد؟؟؟
developing
چهارشنبه 02 شهریور 1390, 16:36 عصر
با سلام
حق با آقا شاهینه.
روش ذخیره شدن فایل متنی با فایل باینری در موارد زیر با هم فرق دارند.
1-تعیین انتهای خط
2- تعیین انتهای فایل
3- نحوه ی ذخیره شدن اعداد بر روی دیسک
1- در فایل متنی انتهای خط با کاراکتر CR/LF مشخص می شود و باید در زمان خواندن تبدیل به کاراکتر انتهای خط شود و در هنگام نوشتن باید انتهای خط به این کاراکتر تبدیل شود ولی در فایلهای باینری انتهای خط طور دیگری مشخص می شود.(مثلا در فایل عکس طول و عرض عکس مشخص است و دیگر نیازی به تشخیص انتهای خط در هر ردیف وجود ندارد)
2- در فایل متنی انتهای فایل با کاراکتر 1A در مبنای 16 و یا 26 در مبنای 10 مشخص می شود( که در سیستم عامل داس با زدن کلیدهای Ctrl + Z می توانستیم انتهای فایل را ببندیم.) و باید آن را تبدیل نمود، ولی در فایلهای باینری تبدیل چیزی دیگر رخ می دهد(بسته به نوع فایل و الگوریتم ذخیره سازی)
3- اعداد که مهمترین مشخصه می شود و می توانید آنرا امتحان نمایید.
program TextFile;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
f: Text;
a: integer;
begin
a:= 123456;
Assign(f,'c:\Text.dat');
Rewrite(f);
Write(f,a);
Close(f);
end.
و برای نوشتن برنامه ی بالا در یک فایل باینری به روش زیر:
program TextFile;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
f: file of integer;
a: integer;
begin
a:= 123456;
Assign(f,'c:\Byte.dat');
Rewrite(f);
Write(f,a);
Close(f);
end.
و تفاوت آنها را در اندازه ی خودشان ببینید.
نکته: من در هر دو برنامه یک متغیر عددی ذخیره کردم که تفاوت ملموس باشد.
امیدوارم جواب گرفته باشید.
یوسف زالی
شنبه 05 شهریور 1390, 01:58 صبح
سلام دوباره.
وقتی یک فایل متنی هست یعنی هر کاراکتر هویت مخصوص خودش رو داره دیگه.
پس کاملا عادیه که 12 یه صورت 1 و 2 ذخیره شه.
انتهای فایل رو هم که در متنی کد EOF میگذاره قبول.
اما فرم ذخیره همون باینری هست.
من تصور کردم که منظور شما چیز دیگه هست.
در ضمن سوای کدهای EOLN و EOF کدهای کنترلی دیگری هم مثل Tab دارای کدهای خودشون هستند.
ممنون از هر دو دوست.
اما من هم مبتدی نیستم و این چیزها رو از دبیرستان می دونم ..
تشکر از وقتی که گذاشتید.
BORHAN TEC
شنبه 05 شهریور 1390, 12:14 عصر
اما من هم مبتدی نیستم و این چیزها رو از دبیرستان می دونم ..
ما که نگفتیم شما مبتدی هستید!!!
البته غیر از تفاوتهایی که دوستمون گفتند بین فایل های متنی و باینری چندین تفاوت دیگر هم وجود دارد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.