1 00:00:00,000 --> 00:00:10,210 >> [संगीत खेल] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA चान: चलो झटका आकार बदलने के साथ चीजों को. 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 फिर, आप आकार बदलने, और कर रहे हैं क्योंकि यह एक बिटमैप है, क्योंकि यह एक शीर्ष लेख, ताकि 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 पिक्सेल द्वारा पिक्सेल, क्षैतिज आकार बदलने और उन पिक्सल लिख 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 >> तो फिर, अपना पहला कदम शायद हो सकता है सी.पी., 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 छवि की चौड़ाई है पिक्सल में padding शून्य से. 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 संरचना और देखकर चर रहे सूचीबद्ध हैं. 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 एक संरचना के लिए एक संकेत में लेता है जो बाइट्स में शामिल होंगे 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 n में प्रत्येक पिक्सेल के लिए तो, 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 समारोह है, तो हम संरचना करने के लिए सूचक ले लिया है 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 अलग widths. 83 00:04:46,360 --> 00:04:46,690 >> ठीक है. 84 00:04:46,690 --> 00:04:51,050 तो शायद एक सूत्र होगा यहां काम में आते हैं. 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 वहाँ से आकार. 105 00:05:58,710 --> 00:06:02,280 भले ही विधि की, हालांकि, आप हूँ हर पिक्सेल दोहराया जाना चाहते हैं 106 00:06:02,280 --> 00:06:06,370 n बार, और हर पंक्ति होने के लिए साथ ही एन बार दोहराया. 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