আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন

আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন
আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন

ভিডিও: আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন

ভিডিও: আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন
ভিডিও: Как нарисовать Месси Легко 2024, নভেম্বর
Anonim

একটি বিএমপি চিত্রের প্রতিটি পিক্সেল আরজিবি মডেল (চিত্রের রঙের মডেল, যা তিনটি উপাদান আর - লাল, জি - সবুজ, বি - নীল) নিয়ে গঠিত থেকে তার রঙ সম্পর্কে তথ্য বহন করে। আরজিবি রঙের মান হেক্স ফর্ম্যাটে (হেক্সাডেসিমাল) সংরক্ষণ করা আরও সুবিধাজনক, যেখানে প্রতিটি উপাদানটির মান 00… এফএফ হয়। 000000 সংমিশ্রণটি কালো, এফএফএফএফএফএফ - সাদা থেকে মিলছে।

আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন
আরজিবি চিত্রগুলিকে কীভাবে পাঠ্যে রূপান্তর করবেন

শুরু করতে, আসুন অঙ্কন নেমস্পেস খুলুন:

সিস্টেম.ড্রয়িং ব্যবহার করে;

বিটম্যাপ শ্রেণীর একটি নতুন উদাহরণ তৈরি করুন:

বিটম্যাপ বিএমপি = নতুন বিটম্যাপ ("c: / 1.bmp") / / সি: / 1.bmp - চিত্রের ঠিকানা

পিক্সেল রঙের মান সঞ্চয় করতে, আপনি একটি পৃথক কাঠামো তৈরি করতে পারেন, যার ক্ষেত্রগুলি আরজিবি উপাদান, তবে আমি অঙ্কন নেমস্পেস থেকে রঙ শ্রেণিটি ব্যবহার করার সিদ্ধান্ত নিয়েছি। রঙ পেতে, আমরা গেটপিক্সেল (x, y) পদ্ধতি ব্যবহার করি, যেখানে x, y চিত্র পিক্সেলের স্থানাঙ্ক হয়। আপনি যদি রঙের শ্রেণীর উদাহরণ না দিয়ে রঙ সংরক্ষণ করতে নিজের কাঠামো ব্যবহার করতে চান তবে আপনি একটি একক আরজিবি উপাদান পেতে xmp, গেটপিক্সেল (x, y).x পদ্ধতি ব্যবহার করতে পারেন, যেখানে x আর, জি, বা বি।

রঙ [,] রঙ = নতুন রঙ [bmp. Width, bmp. Hight];

এর জন্য (ইন্টি y = 0; y <বিএমপি.হাইট; ওয়াই ++)

(ইন্টি x = 0; এক্স <বিএমপি। প্রস্থ; x ++)

{

রঙ [x, y] = বিএমপি.গেটপিক্সেল (x, y);

}

কোনও ফাইলে রঙের মান লিখতে, আমরা স্ট্রিমরাইটার ক্লাসটি ব্যবহার করি। যেহেতু রঙের উদাহরণগুলির আর, জি, বি উপাদানগুলি বাইট প্রকারের, তাই আমরা টসস্ট্রিং ("এক্স 2") পদ্ধতিটি ব্যবহার করে স্ট্রিং টাইপে রূপান্তর করি যা আরজিবি উপাদানগুলির হেক্স মান সংরক্ষণ করবে।

স্ট্রিমউইটার স্টিম রাইটার = নতুন স্ট্রিম রাইটার ("সি: / 1.txt");

এর জন্য (ইন্টি y = 0; y <বিএমপি.হাইট; ওয়াই ++)

{

(ইন্টি x = 0; এক্স <বিএমপি। প্রস্থ; x ++)

{

স্টিম রাইটার.ওরাইট (রঙ [x, y].আর.টোস্ট্রিং ("এক্স 2"));

স্টিম রাইটার.ওরাইট (রঙ [x, y]। জি.টি.স্ট্রিং ("এক্স 2"));

স্টিম রাইটার.ওরাইট (রঙ [x, y]। বি। টোস্ট্রিং ("এক্স 2") + ");

}

steamWriter. WritLine ();

}

স্টিম রাইটার.ক্লোজ ();

এখন আসুন বিপরীতমুখী অপারেশন চালিয়ে যাই - ফলাফল প্রাপ্ত টেক্সট ফাইলটিকে একটি চিত্রে রূপান্তর করি।

স্ট্রিমরিডার এর সাহায্যে আমরা ফাইলটি থেকে তথ্য পড়ি।

স্ট্রিমরিডার txtFile = নতুন স্ট্রিমরিডার ("সি: / 1.txt");

আমরা চিত্রটির প্রস্থ এবং উচ্চতা গণনা করি। যেহেতু প্রতিটি পিক্সেল 6 অক্ষর এবং 1 ফাঁক নেয়, এবং শেষে কোনও ফাঁক নেই, আমরা প্রস্থটি গণনা করতে নীচের সূত্রটি ব্যবহার করি:

temp = txtFile. Radadine ();

প্রস্থ = (অস্থায়ী দৈর্ঘ্য + 1) / 7;

চিত্রের উচ্চতা ফাইলের রেখার সংখ্যা:

যখন (! txtFile. EndOfStream)

{

txtFile. ReadLine ();

উচ্চতা ++;

}

উচ্চতা ++;

শুরুতে ফাইলের পঠিত পয়েন্টারটি সরান:

txtFile. DiscardBufferedData ();

বিটম্যাপ শ্রেণীর একটি নতুন উদাহরণ তৈরি করুন:

বিটম্যাপ বিএমপি 2 = নতুন বিটম্যাপ (প্রস্থ, উচ্চতা);

বিভক্ত পদ্ধতিটি ব্যবহার করে আমরা ম্যাট্রিক্সের উপাদানগুলি বিভক্ত করি। আমরা বাইট প্রকারের তিনটি ভেরিয়েবল ঘোষণা করি - আর, জি, বি পার্স এবং সাবস্ট্রিং পদ্ধতি ব্যবহার করে পৃথকভাবে বর্ণ উপাদান নির্বাচন করুন।

এই রঙের সাথে চিত্রের পিক্সেলটি পূরণ করতে, সেটপিক্সেল (জে, আই, কালার.ফ্রومআরজিবি (আর, জি, বি)) পদ্ধতিটি ব্যবহার করুন, যেখানে জে, আমি চিত্রের স্থানাঙ্ক, কালার.ফর্মআর্গ (আর, জি, বি)) এমন একটি পদ্ধতি যা কাঠামোর রঙ তৈরি করে।

এর জন্য (int i = 0; i <উচ্চতা; i + +)

{

temp = txtFile2. Radadine ();

স্ট্রিং সাবস্ট্রিং = টেম্প.স্প্লিট ('');

(int j = 0; j <প্রস্থ; জে + +) এর জন্য

{

আর = বাইট. পার্স (সাবস্ট্রিং [জে]। সাবস্ট্রিং (0, 2), সিস্টেম.গ্লোবালাইজেশন.নাম্বার স্টাইলস.হেক্স নাম্বার)

জি = বাইট. পার্স (সাবস্ট্রিং [জে]। সাবস্ট্রিং (২, ২), সিস্টেম.গ্লোবালাইজেশন.নাম্বার স্টাইলস.হেক্স নাম্বার)

বি = বাইট. পার্স (সাবস্ট্রিং [জে]। সাবস্ট্রিং (৪, ২), সিস্টেম.গ্লোবালাইজেশন.নাম্বার স্টাইলস.হেক্স নাম্বার)

bmp2. SetPixel (j, i, color. FromArgb (আর, জি, বি));

}

}

এখন আপনি ছবিগুলি সংরক্ষণ করতে পারেন। আপনি যদি উইন্ডোজফর্মে কাজ করছেন তবে আপনি SaveFileDialog শ্রেণিটি ব্যবহার করতে পারেন:

SaveFileDialog saveImage = নতুন SaveFileDialog ();

saveImage. Filter = বিএমপি ফাইল (*। বিএমপি) | *। বিএমপি | সমস্ত ফাইল (*। *)

| *. * ;

saveImage. ShowDialog ();

bmp2. Save (saveImage. FileName);

প্রস্তাবিত: