1 00:00:00,000 --> 00:00:10,210 >> [সঙ্গীত বাজাচ্ছি] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA Chan: ধরা যাক এর ঘা পুনরায় মাপ সঙ্গে জিনিষ আপ. 3 00:00:13,320 --> 00:00:17,710 পুনরায় মাপ, ব্যবহারকারী মাধ্যমে, এ পাস হবে কমান্ড লাইন, একটি বিটম্যাপ ইমেজ যে 4 00:00:17,710 --> 00:00:21,860 তারা আপনাকে একটি নম্বর দ্বারা আকার পরিবর্তন করতে চান তারা, পাস যে 5 00:00:21,860 --> 00:00:23,770 কমান্ড লাইনে. 6 00:00:23,770 --> 00:00:24,690 আমরা এই কিভাবে করব? 7 00:00:24,690 --> 00:00:28,270 >> ওয়েল, প্রথম জিনিস প্রথম, যাক এর পদক্ষেপ মধ্যে এই ভাঙ্গিয়া. 8 00:00:28,270 --> 00:00:31,510 আপনি infile খুলতে চান চলুন তারা আপনাকে দেবে, যেমন করে 9 00:00:31,510 --> 00:00:35,560 তৈরি এবং outfile খুলতে যে আপনাকে করা চলুন 10 00:00:35,560 --> 00:00:38,020 ইন পরিবর্তিত ইমেজ 11 00:00:38,020 --> 00:00:42,050 এর পরে, আপনি resizing, এবং করছি কারণ এটি একটি বিটম্যাপ কারণ, এটি একটি হেডার, তাই 12 00:00:42,050 --> 00:00:46,080 তবে আপনাকে হেডার আপডেট চলুন outfile জন্য তথ্য, 13 00:00:46,080 --> 00:00:47,950 এবং এখনো করে লিখুন 14 00:00:47,950 --> 00:00:51,850 এর পরে, আপনি মধ্যে পড়তে যাচ্ছেন infile এর scanline, 15 00:00:51,850 --> 00:00:56,890 পিক্সেল বাই পিক্সেল, অনুভূমিকভাবে resizing এবং মধ্যে যারা পিক্সেল লেখা 16 00:00:56,890 --> 00:01:00,910 outfile, নির্দিষ্ট হিসেবে ব্যবহারকারীর স্কেল দ্বারা. 17 00:01:00,910 --> 00:01:03,940 >> আপনি মনে রাখবেন চলুন প্রয়োজনীয় হিসাবে প্যাডিং যোগ করুন. 18 00:01:03,940 --> 00:01:05,400 পরে যে আরও. 19 00:01:05,400 --> 00:01:07,790 এবং তারপর, এছাড়াও উল্লম্বভাবে মাপ পরিবর্তন. 20 00:01:07,790 --> 00:01:08,890 ঠিক আছে. 21 00:01:08,890 --> 00:01:13,280 তাই এই সামান্য বিট আরো হতে যাচ্ছে এটা সম্পন্ন কে বেশী জটিল, কিন্তু 22 00:01:13,280 --> 00:01:18,310 কি যে অনুরূপ copy.c করবে না হয়, আবার, খুব দরকারী প্রমাণ. 23 00:01:18,310 --> 00:01:23,160 , Copy.c একটি ফাইল খোলেন মনে রাখবেন যে, হেডারের তথ্য আপডেট 24 00:01:23,160 --> 00:01:28,250 outfile তারপর scanline মধ্যে সার্চ, পিক্সেল বাই পিক্সেল, প্রতি পিক্সেল লেখা 25 00:01:28,250 --> 00:01:30,510 আউটপুট ফাইল এর scanline মধ্যে. 26 00:01:30,510 --> 00:01:37,040 >> তাই আবার, আপনার প্রথম পদক্ষেপ সম্ভবত পারে CP, copy.c, resize.c করতে হবে 27 00:01:37,040 --> 00:01:40,560 আপনার Pset5 ডিরেক্টরিতে. 28 00:01:40,560 --> 00:01:43,920 আপনি কপি করার আগে, যদিও মনে রাখবেন, আপনি বুঝতে নিশ্চিত যে 29 00:01:43,920 --> 00:01:46,600 খুব পুঙ্খানুপুঙ্খভাবে copy.c. 30 00:01:46,600 --> 00:01:47,620 ঠিক আছে. 31 00:01:47,620 --> 00:01:49,880 >> সুতরাং এর একটি ফাইল খুলুন. 32 00:01:49,880 --> 00:01:50,870 আপনি কি সেটা জানেন কিভাবে. 33 00:01:50,870 --> 00:01:52,600 আমি তোমাদের যে ছেড়ে চলে যাচ্ছি. 34 00:01:52,600 --> 00:01:56,050 এর পরে, হেডারের তথ্য আপডেট outfile জন্য. 35 00:01:56,050 --> 00:01:59,240 আমরা একটি নতুন বিটম্যাপ আছে, আমরা নতুন হেডারের তথ্য আছে. 36 00:01:59,240 --> 00:02:00,970 কি এখানে পরিবর্তন হচ্ছে? 37 00:02:00,970 --> 00:02:06,000 ওয়েল, ফাইলের আকার পরিবর্তন করতে হবে আমরা আরো আছে চলুন, কারণ 38 00:02:06,000 --> 00:02:07,900 আগের চেয়ে অনেক পিক্সেল. 39 00:02:07,900 --> 00:02:11,060 ছবির আকার এছাড়াও, এইভাবে হয় যেমন, পরিবর্তন করতে যাচ্ছেন 40 00:02:11,060 --> 00:02:13,050 প্রস্থ এবং উচ্চতা. 41 00:02:13,050 --> 00:02:17,180 >> সুতরাং যা ভেরিয়েবল যারা ঠিক, কি? 42 00:02:17,180 --> 00:02:20,960 হ্যাঁ, আপনি হেডার দেখব যদি তথ্য, আপনি সেখানে দেখতে 43 00:02:20,960 --> 00:02:25,640 মোট প্রতিনিধিত্ব করে যা biSizeImage, বাইট মধ্যে ইমেজ মাপ, 44 00:02:25,640 --> 00:02:28,340 পিক্সেল এবং প্যাডিং সহ. 45 00:02:28,340 --> 00:02:32,520 biWidth চিত্র প্রস্থ হয় পিক্সেলে, প্যাডিং বিয়োগ. 46 00:02:32,520 --> 00:02:35,580 biHeight উচ্চতা হল পিক্সেলে ছবিটি. 47 00:02:35,580 --> 00:02:39,200 তাই যারা অন্তর্গত হয় structs BITMAPFILEHEADER এবং 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 আপনি দ্বারা যা যা এক বলতে পারেন bmp.h যাচ্ছে এবং আমি 50 00:02:45,300 --> 00:02:49,670 BITMAPINFOHEADER struct এবং এইজন্য ভেরিয়েবল আছে তালিকাভুক্ত করা হয় যা. 51 00:02:49,670 --> 00:02:54,700 >> সুতরাং outfiles হেডার আপডেট তথ্য, আপনি চান চলুন 52 00:02:54,700 --> 00:02:57,025 যারা মান পরিবর্তন উচ্চতা এবং প্রস্থ. 53 00:02:57,025 --> 00:03:00,570 কিন্তু সম্ভাবনা আছে, আপনি কিছু প্রয়োজন হতে পারে infile এর হেডার তথ্য 54 00:03:00,570 --> 00:03:03,670 পরে, তাই ভাল উভয় ট্র্যাক রাখতে. 55 00:03:03,670 --> 00:03:07,770 কিন্তু আপনার ভেরিয়েবল সঙ্গে খুব স্পষ্ট করা নাম যাতে আপনি করবেন না ঘটনাক্রমে 56 00:03:07,770 --> 00:03:12,490 ভুল মান লিখুন outfile জন্য হেডার. 57 00:03:12,490 --> 00:03:16,160 >> তাই এখন এর মধ্যে পড়া করতে করতে দেওয়া scanline পিক্সেল বাই পিক্সেল. 58 00:03:16,160 --> 00:03:20,210 আবার, আমরা আমাদের বিশ্বাসভাজন চালু করতে যাচ্ছেন ইনপুট / আউটপুট লাইব্রেরি ফাইল, এবং তাকান 59 00:03:20,210 --> 00:03:22,100 fread ফাংশন. 60 00:03:22,100 --> 00:03:26,150 fread একটি struct একটি পয়েন্টার লাগে যে বাইট ধারণ করবে 61 00:03:26,150 --> 00:03:30,130 আপনি মধ্যে পড়ি, প্রতিটি মাপ আপনি পড়ি যে উপাদান - 62 00:03:30,130 --> 00:03:34,410 আবার, sizeof উপযোগী হতে যাচ্ছে এখানে কাজ, সংখ্যা 63 00:03:34,410 --> 00:03:38,820 আপনি যে আকার, আয়তন উপাদান, তারপর অবশেষে মধ্যে পড়া, এবং, 64 00:03:38,820 --> 00:03:41,310 inpointer, ফাইলের যে আপনার কাছ থেকে পড়ি. 65 00:03:41,310 --> 00:03:46,770 তাই আপনি যদি সংখ্যা উপাদান গ্রহণ করছেন inpointer থেকে আকার, এবং এর 66 00:03:46,770 --> 00:03:49,040 তথ্য সেগুলি নির্বাণ. 67 00:03:49,040 --> 00:03:51,695 >> এখন এটি অনুভূমিকভাবে মাপ পরিবর্তন করার সময়. 68 00:03:51,695 --> 00:03:56,880 এন প্রতিটি পিক্সেল জন্য তারপর, 2 সমান হলে infile, আমরা তা লিখতে যাচ্ছেন 69 00:03:56,880 --> 00:04:00,870 দু 'বার outfile মধ্যে. 70 00:04:00,870 --> 00:04:02,210 কিভাবে আমরা ফাইল লিখুন? 71 00:04:02,210 --> 00:04:06,400 ভাল, আমরা fwrite ফাংশন আছে, তাই আমরা struct যাও পয়েন্টার গ্রহণ করেছেন 72 00:04:06,400 --> 00:04:10,170 যে আপনি যে বাইট রয়েছে থেকে লেখা, এবং তারপর আমরা পাস 73 00:04:10,170 --> 00:04:14,430 আকার, সংখ্যা, এবং আউটপুট, যেখানে আপনি যে লেখার করা চলুন. 74 00:04:14,430 --> 00:04:19,200 এবং তারপর একটি প্রক্রিয়া পুনরাবৃত্তি, হবে লুপ জন্য সক্ষম একটি সহজ পুনরাবৃত্ত. 75 00:04:19,200 --> 00:04:21,740 >> কিন্তু আমরা মনে রাখা প্রয়োজন ইন প্যাডিং যোগ করতে 76 00:04:21,740 --> 00:04:26,040 প্যাডিং ধারণা যে, ভাল, হয় প্রতিটি পিক্সেল তিনটি কামড়, কিন্তু 77 00:04:26,040 --> 00:04:28,940 প্রতিটি scanline আবশ্যক মাপ 4 বাইটের একটি একাধিক হতে. 78 00:04:28,940 --> 00:04:33,660 তাই পিক্সেল সংখ্যা নয় যদি 4 একাধিক, আমরা কিছু যুক্ত করতে হবে 79 00:04:33,660 --> 00:04:36,630 শুধু শূণ্যসমূহ যা প্যাডিং,. 80 00:04:36,630 --> 00:04:42,130 এখন, এটা সম্পন্ন কে পৃথক, এবং অসদৃশ কপি, তারপর infile ইমেজ এবং 81 00:04:42,130 --> 00:04:44,370 outfile ফাইলের বিভিন্ন আছে আছে বিভিন্ন প্যাডিং তারা কারণ 82 00:04:44,370 --> 00:04:46,360 বিভিন্ন প্রশস্ততা. 83 00:04:46,360 --> 00:04:46,690 >> ঠিক আছে. 84 00:04:46,690 --> 00:04:51,050 তাই সম্ভবত একটি সূত্র would এখানে উপকারে আসা. 85 00:04:51,050 --> 00:04:55,120 আমি এটা খুঁজে বের করতে যদি আপনি এটি ছেড়ে, কিন্তু করব প্যাডিং লিখতে, যে আপনাকে বলতে, 86 00:04:55,120 --> 00:04:59,360 ওয়েল, এটা শুধুমাত্র একটি সহজ fputc ফাংশন, চরিত্রের কথা প্রসঙ্গে 87 00:04:59,360 --> 00:05:02,200 এর পরে লিখতে চান, এবং যে ফাইল পয়েন্টার যে আপনি 88 00:05:02,200 --> 00:05:04,280 লিখতে চাই. 89 00:05:04,280 --> 00:05:08,670 তাই এখন আমরা, অনুভূমিকভাবে মাপ পরিবর্তন করেছি এবং তারপর, প্যাডিং ব্যবহার 90 00:05:08,670 --> 00:05:12,030 আপনি আপনার ফাইল সরানো প্রয়োজন মনে রাখা অবস্থান নির্দেশক, আপনি কারণ 91 00:05:12,030 --> 00:05:14,480 প্যাডিং মধ্যে fread করতে পারবেন না. 92 00:05:14,480 --> 00:05:18,230 সুতরাং আপনি নিশ্চিত যে করতে চাই আপনার ফাইল infile মধ্যে অবস্থান নির্দেশক 93 00:05:18,230 --> 00:05:19,980 সঠিক সময়ে হয়. 94 00:05:19,980 --> 00:05:23,970 আমরা চাই কারণ উল্লম্বভাবে মাপ পরিবর্তন. 95 00:05:23,970 --> 00:05:27,090 আমরা শুধু, অনুভূমিকভাবে এটি প্রসারিত করতে পারবেন না প্রত্যেক সারিতে চাহিদা কারণ 96 00:05:27,090 --> 00:05:30,370 এন বার কপি করা. 97 00:05:30,370 --> 00:05:33,050 >> এখন, বিভিন্ন বিভিন্ন আছে এটি করার উপায়. 98 00:05:33,050 --> 00:05:39,010 তাই এক, আমরা, একটি পুনঃলিখনের পদ্ধতি ব্যবহার করতে পারেন আমরা পিক্সেল সব মনে রাখবেন যে 99 00:05:39,010 --> 00:05:42,840 একটি প্রদত্ত একটি অ্যারের মধ্যে সারি, এবং তারপর আমরা হিসাবে যে অ্যারের লিখুন 100 00:05:42,840 --> 00:05:44,730 অনেক বার হিসাবে প্রয়োজন. 101 00:05:44,730 --> 00:05:49,530 অথবা যেখানে recopy পদ্ধতি আছে, infile এক সারিতে পড়ার পর 102 00:05:49,530 --> 00:05:53,530 এবং তারপর outfile মধ্যে যে লেখা, প্যাডিং যোগ, আমরা যাও fseek 103 00:05:53,530 --> 00:05:57,250 মূল সারি শুরু করার ব্যাক, এবং তারপর অনুভূমিক পুনরাবৃত্তি 104 00:05:57,250 --> 00:05:58,710 সেখানে থেকে resizing. 105 00:05:58,710 --> 00:06:02,280 তথাপি পদ্ধতি, যদিও, আপনি পাবেন প্রতি পিক্সেল পুনরাবৃত্তি করা চাই 106 00:06:02,280 --> 00:06:06,370 এন বার, এবং প্রতি সারিতে থাকা পাশাপাশি এন বার পুনরাবৃত্তি. 107 00:06:06,370 --> 00:06:09,160 >> যে সঙ্গে, আপনি বিটম্যাপ করতে হবে জীবনের চেয়ে বড়. 108 00:06:09,160 --> 00:06:11,760 আমার নাম Zamyla, এবং এই CS50. 109 00:06:11,760 --> 00:06:19,542