BMP
BMP (ინგლ. Bitmap Picture) — ციფრული გამოსახულების სახე Microsoft-ის და IBM-ის მიერ განვითარებული.ეს არის გამოსახულების ერთ-ერთი ყველაზე მარტივი სახე განვითარებისთვის და პროგრამების გამოყენებისთვის. ის არის წაკითხვადი თითქმის ყველა სურათის შემდგენელი მოწყობილობისთვის.
ის ეხება მატრიცულ გამოსახულებებს.
ფაილის ორგანიზება[რედაქტირება | წყაროს რედაქტირება]
ფაილი იყოფა სამ ზონად(ნაწილად):
- ფაილის დასაწყისი;
- ფერების პალიტრა;
- გამოსახულების შესაბამისი მონაცემები.
ფაილის დასაწყისი[რედაქტირება | წყაროს რედაქტირება]
ის თავისმხრივ იყოფა ორ ნაწილად:
- ფაილის შესაბამისი მონაცემები,
- გამოსახულების შესაბამისი მონაცემები.
განსაკუთრებით აღსანიშნავია ფაილის ზომა ბაიტებში, სურათში ბიტების რაოდენობა პიქსელების მიხედვით, შეკუმშვის გამოყენებული ტიპი, ფერების რაოდენობა პალიტრაში, გამოსახულების სიგრძე და სიგანე და ა.შ.
პალიტრა[რედაქტირება | წყაროს რედაქტირება]
კითხვის პროგრამები იყენებენ სამ ბაიტს ფერების დასაშიფრად.(სამმაგი ფერის სისტემას. წიტელი, მწვანე, ცისფერი):
- BMP-ში_24ბიტი (1 ბაიტი წითელი, 1 ბაიტი მწვანე, 1 ბაიტი ცისფერი), პალიტრა არ არის საჭირორადგან აქ შეგვიძლია ყველა ფერის წარმოდგენა.
- BMP-ში_8ბიტი არ შეგვიძლია 256 ფერზე მეტის წარმოდგენა, საჭიროა განვსაზღვროთ შესაბამისობა პიქსელის ფერებს შორის და სამ შემადგენელ ფერს შორის. ანუ ფაილის თავში დაემატა ცხრილი, რომელიც სამმაგი ფერის( წიტელი, მწვანე, ცისფერი) რომელიც 0-255 ინტერვალიდან ტითოეულ მნიშვნელობას უსაბამებს შესაბამის შედეგს.
პალიტრა შეიძლება წარმოვადგინოთ შემდეგი ცხრილით:
გამოსატანი მნიშვნელობა | წითელი მწვანე ცისფერი | |
---|---|---|
0 | წითელი=r1, ცისფერი=b1, მწვანე=v1 + octet 00 | |
… | ||
255 | წითელი =r255, ცისფერი=b255, მწვანე =v255 + octet 00 |
მაგალითად ნაცრისფერი სურათისთვის სამივე ფერის მნიშვნელობა იქნება ერთი და იგივე და იმეტყევებს 0-255 ინტერვალში.
ფერების რაოდენობა[რედაქტირება | წყაროს რედაქტირება]
ეს ფორმატი შეიცავს რამდენიმე ვარიანტს, შესაძლებელი ფერების რაოდენობის მიხედვით. ფერების სიღრმე არის თითოეულ პიქსელთან ასოცირებული ბიტების რაოდენობა,რომელიც გამოიყენება ფერების დაშიფრისთვის.
BMP გამოსახულება შეიძლება წარმოდგენილი იყოს 2 ფერში(1 ბიტი, 16 ფერში (4 ბიტი), 256 ფერში (8 ბიტი), 65 536 ფერში (16 ბიტი) ან 16.8მილიონ ფერში (24ბიტი).
ფაილის ზომა[რედაქტირება | წყაროს რედაქტირება]
BMP ფორმატი არის თითქმის არარსებული Web ბრაუზერზე და ის არ არის შეკუმშული. მაგრამ მიუხედავად ამისა არსებობს RLE შეკუმშვის ტიპი BMP ფორმატისთვის.
BMP ფაილის მიახლოებითი ზომის გამოსათვლელად, ფერების სიღრმეს (1, 4, 8, 16, ან 24 ბიტი) ვამრავლებთ პიქსელების სიღრმეზე და სიგანეზე. ანუ (ფერების სიღრმე ბიტებში)x(სიმაღლეზე პიქსელებში)x(სიგანეზე პიქსელებში). მაგალითად, გვაქვს 800x600-ზე გამოსახულება. (800 პიქსელი სიგანით და 600 პიქსელი სიმაღლით) 24 ბიტში (16.8 მილიონი ფერი. მას ექნება შემდეგი ზომა: (800x600x24) ბიტი ან 1.4 მეგაოქტეტი
გამოსახულების მონაცემების განლაგება[რედაქტირება | წყაროს რედაქტირება]
უმეტეს შემთხვევაში გამოსახულების ფორმატის, გამოსახულების პიქსელების დაშიფრვა იწყება გამოსახულების ყველაზე პატარა (მცირე) ხაზიდან. თითოეული ხაზი (დაშიფრულია მარცხნიდან მარჯვნივ) უნდა იკავებდეს 4-ის ჯერადი რაოდენობის ოქტეტებს, იმ შემთხვევის გარდა თუ გამოსახულება არაა შეკუმშული. თუ ხაზი არ შეიცავს 4-ის ჯერადი რაოდენობის ოქტეტებს, მაშინ ხაზს ვავსებთ 0ების დამატებით.
თუ გამოსახულება დაშიფრულია 24 ბიტით, თითოეულ პიქსელს შეესაბამება 24 ბიტის შესაბამისი მთელი რიცხვი.
თუ გამოსახულება დაშიფრულია 24 ბიტზე ნაკლები რაოდენობით, თითოეული პიქსელი დაშიფრულია ფერების ცხრილში არსებული ინდექსებით. და ასეთ გამოსახულებას ინდექსირებულ გამოსახულებას უწოდებენ. ამ შემთხვევაში გამოსახულების პიქსელები იშიფრებიქნ 1 ან 4 ბიტით, ანუ თუ ბევრი პიქსელია ერთი და იგივე ბიტით დაშიფრული, მაშინ უფრო მეტწონიანი ბიტები ეხებიან ყველაზე მარცხნივ მდგომ პიქსელს.
შეკუმშვა[რედაქტირება | წყაროს რედაქტირება]
BMP ფორმატი საშუალებას გვაძლევს გამოვიყენოთ RLE შეკუმშვის ალგორითმი 8 ბიტიანი (256 ფერი) და 4 ბიტიანი (16 ფერი) გამოსახულებებისთვის.
პრინციპი:
- ოქტეტი მუთავსებულია 1-255 ინტერვალში, უთითებ პიქსელების რაოდენობას რომლისთვისაც უნდა გამოიყენო შემდეგი ოქტეტის შემცველი ინფორმაცია.
- თუ ოქტეტში არის ნულები, მაშინ ის სპეციალურ მოქმედებას გულისხმობს.
- თუ ის არის 0, ხაზის დასასრული მიღწეულია და გადადის შემდეგ ხაზზე.
- თუ ის არის 1, გამოსახულების დასასრული მიღწეულია და ამთავრებს კითხვას.
- თუ ის არის 2, ახტება x ცოლონას და y სვეტს სანამ გააგრძელებს. (x და y არიან დაშიფრულები 1ოქტეტით).
- თუ ის არის 3-255 ინტერვალში, მაშინ ის ეხება პიქსელების იმ რაოდენობას რომლებიც შემდგომ მოდის და დაშიფრულია როგორც მონაცემები შეუკუმშავად. ამ შემთხვევაში უნდა გამოვტოვოთ არასაჭირო ოქტეტები იმ მიზნით რომ ოქტეტების რაოდენობა იყოს ლუწი.