1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [عزف الموسيقى] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: مرحبا. 4 00:00:14,080 --> 00:00:17,550 أنا روب، ودعونا نأمل أن هذا الحل يساعد وضع لكم 5 00:00:17,550 --> 00:00:19,600 على الطريق الى الانتعاش. 6 00:00:19,600 --> 00:00:22,700 لذلك دعونا نبدأ. 7 00:00:22,700 --> 00:00:25,660 >> ونحن نرى أن على الفور نحن فقط للتأكد من أننا 8 00:00:25,660 --> 00:00:27,170 باستخدام استرداد بشكل صحيح. 9 00:00:27,170 --> 00:00:31,490 وبالتالي فإن استخدام يجب أن يكون مجرد شيء مثل الخط المائل نقطة استعادة. 10 00:00:31,490 --> 00:00:35,500 >> الآن ونحن في طريقنا لفتح المتوقع بطاقة دوت الملف الخام. 11 00:00:35,500 --> 00:00:39,740 نرى هنا أن نستخدمه ل ثابت اسم الملف تسطير الخام، 12 00:00:39,740 --> 00:00:44,200 التي تصل هنا لدينا تجزئة يعرف بأنه بطاقة دوت الخام. 13 00:00:44,200 --> 00:00:45,030 موافق. 14 00:00:45,030 --> 00:00:48,210 >> لذلك نحن بحاجة للتأكد من أن هذا افتتح بنجاح لأنه إذا 15 00:00:48,210 --> 00:00:51,150 لم يكن، ثم علينا أن تحذير المستخدم. 16 00:00:51,150 --> 00:00:56,770 ولكن على افتراض أنه فعل، ونحن الآن سوف تعلن منطقة عازلة من حجم JPEG 17 00:00:56,770 --> 00:00:58,170 ملف طول الاسم. 18 00:00:58,170 --> 00:01:02,060 ولذلك فإن هذا سيكون المخزن المؤقت الذي ونحن في طريقنا إلى sprintf في. 19 00:01:02,060 --> 00:01:04,360 >> فما هو ملف JPEG طول الاسم؟ 20 00:01:04,360 --> 00:01:08,490 هنا، ونحن نرى أنه من تجزئة يعرف بأنه ثمانية. 21 00:01:08,490 --> 00:01:10,670 فلماذا ثمانية؟ 22 00:01:10,670 --> 00:01:15,150 كذلك سيتم تسمية ملف معين شيء من هذا القبيل صفر صفر صفر. 23 00:01:15,150 --> 00:01:19,460 JPG ومن ثم نحن بحاجة إلى مائل الصفر. 24 00:01:19,460 --> 00:01:22,720 لذلك نحن في حاجة الى العازلة التي يمكن أن تخزين ثمانية أحرف. 25 00:01:22,720 --> 00:01:25,190 الآن ونحن في طريقنا لديك عداد هذا سوف تتبع 26 00:01:25,190 --> 00:01:27,780 صور JPEG عدد جدنا. 27 00:01:27,780 --> 00:01:31,590 >> وأخيرا، ونحن في طريقنا لديها ملف JPEG الذي باطل البداية 28 00:01:31,590 --> 00:01:35,920 التي ستكون حاليا ملف مفتوح أننا الكتابة ل. 29 00:01:35,920 --> 00:01:37,540 الآن ونحن في طريقنا لديك وجود مخزن مؤقت إضافية. 30 00:01:37,540 --> 00:01:41,350 هذه ليست هي نفسها كما لدينا sprintf العازلة حيث هذا المخزن المؤقت هو واحد 31 00:01:41,350 --> 00:01:45,020 اننا في قراءة البيانات من بطاقة دوت الخام. 32 00:01:45,020 --> 00:01:48,900 >> لذلك المخزن المؤقت سيكون من حرف غير الموقعة، والتي يمكن 33 00:01:48,900 --> 00:01:53,560 في الأساس مجرد يعاملوننا بايت، وانها سيكون من حجم حجم الكتلة 34 00:01:53,560 --> 00:01:57,950 حيث، كما نقول لكم، حجم الكتلة هو 512. 35 00:01:57,950 --> 00:02:03,070 حتى ملفات JPEG يمكنك علاج كل شيء كما كتل من 512 بايت. 36 00:02:03,070 --> 00:02:05,890 >> الآن ونحن في طريقنا إلى حلقة على الملف بأكمله. 37 00:02:05,890 --> 00:02:12,980 ونحن في طريقنا إلى و قراءة في المخزن لدينا مرة واحدة بايت حجم كتلة من 38 00:02:12,980 --> 00:02:14,710 بطاقة دوت الملف الخام. 39 00:02:14,710 --> 00:02:16,630 الآن ماذا تقرأ و العودة؟ 40 00:02:16,630 --> 00:02:20,050 تقوم بإرجاع عدد من البنود أنه قرأ بنجاح. 41 00:02:20,050 --> 00:02:27,310 حتى إذا تمكنت من قراءة 512 بايت، ثم نريد أن نرى ما إذا كان هذا 42 00:02:27,310 --> 00:02:29,700 JPEG أو الكتابة إلى ملف JPEG. 43 00:02:29,700 --> 00:02:34,450 وإذا لم يقم بإرجاع 512 بايت، ثم انتهت إما في ملف 44 00:02:34,450 --> 00:02:37,870 هذه الحالة سنقوم الخروج من ذ حلقة، أو أن هناك نوعا من الخطأ 45 00:02:37,870 --> 00:02:40,300 في هذه الحالة سنقوم أيضا كسر من ذ حلقة، ولكننا سوف تريد أن يقدم تقريرا 46 00:02:40,300 --> 00:02:41,990 أن شيئا ما حدث من خطأ. 47 00:02:41,990 --> 00:02:42,290 >> موافق. 48 00:02:42,290 --> 00:02:47,630 حتى على افتراض أن نقرأ بنجاح في 512 بايت، نريد أن الاختيار الأول 49 00:02:47,630 --> 00:02:53,070 لجعل هذا هذه بايت أننا قرأت للتو في بدء JPEG. 50 00:02:53,070 --> 00:02:56,430 حتى إذا هو JPEG رأس عازلة لدينا. 51 00:02:56,430 --> 00:02:58,460 الآن ما هو عليه رأس JPEG تفعل؟ 52 00:02:58,460 --> 00:03:00,120 دعونا ننظر. 53 00:03:00,120 --> 00:03:05,270 >> هنا، ونحن نرى أن هذه هي وظيفة العودة الثور، والثور الذي - 54 00:03:05,270 --> 00:03:08,820 كذلك هنا، ونحن فحص لمعرفة ما إذا رأس الصفر يساوي هذا الثابت و 55 00:03:08,820 --> 00:03:11,880 رأس واحد يساوي هذا الثابت و رأس اثنين يساوي هذا الثابت، 56 00:03:11,880 --> 00:03:15,640 رأس ثلاثة يساوي هذا أو هذا ثابت حيث جميع هذه الثوابت هي 57 00:03:15,640 --> 00:03:20,340 مجرد بعثرة تعريف الحق هنا و على بالضبط ما قلنا لكم في المواصفات 58 00:03:20,340 --> 00:03:22,700 أن يبدأ مع JPEG. 59 00:03:22,700 --> 00:03:27,300 وحتى هذه الوظيفة هو مجرد الذهاب الى العودة الحقيقية إذا يمثل هذا المخزن المؤقت 60 00:03:27,300 --> 00:03:31,750 بداية JPEG جديدة وكاذبة خلاف ذلك. 61 00:03:31,750 --> 00:03:32,520 >> موافق. 62 00:03:32,520 --> 00:03:38,490 حتى إذا كان هذا لا يمثل JPEG جديدة، ثم نريد أولا للتحقق لمعرفة ما إذا 63 00:03:38,490 --> 00:03:42,030 ملف JPEG لا تساوي فارغة، في هذه الحالة نحن إغلاقه. 64 00:03:42,030 --> 00:03:44,940 وهكذا لماذا نحن بحاجة إلى التحقق لمعرفة ما اذا انها ليست فارغة؟ 65 00:03:44,940 --> 00:03:48,980 جيدا JPEG الأولى التي نحن تجد لن يكون لدينا بالفعل 66 00:03:48,980 --> 00:03:50,440 ملف JPEG مفتوحة. 67 00:03:50,440 --> 00:03:55,580 وهكذا، لو كنا في محاولة لإغلاق ذلك، ثم نحن لا نقوم بشيء صحيح تماما. 68 00:03:55,580 --> 00:03:59,090 >> ولكن كل JPEG اللاحقة التي نفتح، ونحن نريد ليغلق 69 00:03:59,090 --> 00:04:00,710 الملف السابق. 70 00:04:00,710 --> 00:04:04,630 وحتى الآن ونحن في طريقنا لاستخدام sprintf ونحن وقال قبل حيث نقوم باستخدام 71 00:04:04,630 --> 00:04:06,280 اسم الملف العازلة JPEG. 72 00:04:06,280 --> 00:04:09,870 ونحن في طريقنا إلى استخدام ملف JPEG اسم تنسيق كتنسيق لدينا. 73 00:04:09,870 --> 00:04:12,030 وما هو ذلك؟ 74 00:04:12,030 --> 00:04:18,450 هنا، ونحن نرى أنه من صفر في المئة 3D.JPEG حيث ثلاثة صفر فقط 75 00:04:18,450 --> 00:04:22,089 ويقول ان سنستخدم ثلاثة أعداد صحيحة لهذا مبطن مع الأصفار. 76 00:04:22,089 --> 00:04:27,470 لذلك هذا هو كيف أننا سنصل صفر صفر one.JPEG وصفر 10.JPEG وهلم جرا. 77 00:04:27,470 --> 00:04:29,060 >> نحن ذاهبون الى استخدام sprintf. 78 00:04:29,060 --> 00:04:33,760 وصحيح أننا إدراج في السلسلة ملفات JPEG خدر 79 00:04:33,760 --> 00:04:36,380 تعافى، والذي هو في الأصل صفر. 80 00:04:36,380 --> 00:04:39,950 لذلك فتحت الملف الأول هو الذهاب ليكون الصفر الصفر الصفر نقطة JPEG. 81 00:04:39,950 --> 00:04:43,330 ثم نحن تزايد بحيث و سوف نفتح الملف التالي يكون صفرا صفرا 82 00:04:43,330 --> 00:04:46,830 واحد نقطة JPEG وسنقوم زيادة ذلك مرة أخرى لذلك سوف يكون صفرا صفرا اثنين نقطة 83 00:04:46,830 --> 00:04:49,100 JPEG وهلم جرا. 84 00:04:49,100 --> 00:04:49,850 >> حسنا. 85 00:04:49,850 --> 00:04:53,210 وحتى الآن داخل ملف JPEG اسم، لدينا اسم 86 00:04:53,210 --> 00:04:54,990 الملف الذي نريد. 87 00:04:54,990 --> 00:04:58,640 و يمكننا فتح هذا الملف للكتابة. 88 00:04:58,640 --> 00:04:59,170 موافق. 89 00:04:59,170 --> 00:05:02,820 ومرة أخرى، نحن بحاجة إلى التحقق لجعل تأكد أن الملف بنجاح 90 00:05:02,820 --> 00:05:08,460 افتتح لأنه إذا لم يفعل ذلك، ثم كان هناك بعض الخطأ. 91 00:05:08,460 --> 00:05:13,100 >> حتى الآن نحن قد حصلت في الماضي هل هذا جزء JPEG. 92 00:05:13,100 --> 00:05:16,390 وهنا، ونحن نرى ونحن في طريقنا الكتابة إلى JPEG. 93 00:05:16,390 --> 00:05:20,980 ولكن علينا أولا هذا الاختيار الذي يقول إذا لا ملف JPEG غير فارغة متساوية. 94 00:05:20,980 --> 00:05:22,490 لماذا نحتاج ذلك؟ 95 00:05:22,490 --> 00:05:28,020 كذلك ملف JPEG يساوي فارغة عندما كنا لديك حاليا JPEG مفتوحة. 96 00:05:28,020 --> 00:05:31,870 >> ماذا لو يبدأ الخام بطاقة نقطة مع مجموعة من وحدات البايت التي 97 00:05:31,870 --> 00:05:33,510 لا تمثل JPEG؟ 98 00:05:33,510 --> 00:05:36,240 ثم نحن ذاهبون الى تريد تخطي تلك بايت. 99 00:05:36,240 --> 00:05:39,600 إذا لم يكن لدينا هذا الاختيار، ثم نحن أريد أن أكتب لفتحها 100 00:05:39,600 --> 00:05:45,540 ملف بايت الأولى من 512 البطاقة التي ليست جيدة. 101 00:05:45,540 --> 00:05:46,030 موافق. 102 00:05:46,030 --> 00:05:51,330 >> حتى على افتراض لدينا ملف مفتوح، ثم ونحن في طريقنا إلى الكتابة على هذا الملف 103 00:05:51,330 --> 00:05:53,290 512 بايت أن لدينا في المخزن لدينا. 104 00:05:53,290 --> 00:05:57,390 ونحن فحص مرة أخرى لجعل تأكد أن وحدات البايت 512 بنجاح 105 00:05:57,390 --> 00:06:01,140 كانت مكتوبة لأنه إذا لم تكن مكتوبة بنجاح، ثم شيئا 106 00:06:01,140 --> 00:06:02,080 ذهب على نحو خاطئ. 107 00:06:02,080 --> 00:06:06,540 سنقوم بإغلاق ملفاتنا، أن طباعة حدث خطأ ما، والعودة. 108 00:06:06,540 --> 00:06:10,940 على افتراض كل شيء يذهب بشكل صحيح، ثم سنستمر في حلقات إغلاق 109 00:06:10,940 --> 00:06:15,060 الملف القديم، وفتح ملف جديد والكتابة البيانات إلى ملف جديد، وهكذا 110 00:06:15,060 --> 00:06:20,990 على حتى النهاية، هذا و قراءة بإرجاع صفر وهو ما يعني 111 00:06:20,990 --> 00:06:23,280 أن يتم ذلك الملف. 112 00:06:23,280 --> 00:06:28,490 >> حتى الآن أن القراءة بطاقة هو أكثر، ونحن نرى أننا في طريقنا للو إغلاق 113 00:06:28,490 --> 00:06:33,250 الملف الأخير الذي كان لدينا مفتوحة، ولكن نحن التحقق إذا ملف JPEG 114 00:06:33,250 --> 00:06:34,900 لا فارغة لا تساوي. 115 00:06:34,900 --> 00:06:39,520 كذلك وثيقة و المنطقي لأنه كما نحن فتح الملفات، ونحن إغلاق 116 00:06:39,520 --> 00:06:43,870 ملف السابقة، ولكن الأخيرة جدا الملف الذي فتحنا يحصل أبدا مغلقة. 117 00:06:43,870 --> 00:06:45,580 وهذا ما يقوم به هذا. 118 00:06:45,580 --> 00:06:47,720 >> ولكن لماذا نحن بحاجة إلى التحقق لاغية؟ 119 00:06:47,720 --> 00:06:53,130 جيدا ما إذا كانت بطاقة نقطة الخام لم لديها JPEG واحد داخل منه؟ 120 00:06:53,130 --> 00:06:56,640 في هذه الحالة، سيكون لدينا أبدا فتح ملف. 121 00:06:56,640 --> 00:07:00,230 وإذا لم نكن فتح ملف، يجب علينا لا تحاول إغلاق هذا الملف. 122 00:07:00,230 --> 00:07:03,000 وهذا ما يقوم به هذا الاختيار. 123 00:07:03,000 --> 00:07:07,880 >> الآن هنا، كما قلت من قبل، ونحن يمكن أن نشبت أن y حلقة إما إذا 124 00:07:07,880 --> 00:07:13,520 البطاقة قد انتهت أو إذا كان هناك خطأ في قراءة بعض من البطاقة. 125 00:07:13,520 --> 00:07:16,680 لذلك هذا هو التحقق لمعرفة ما إذا كان هناك خطأ في قراءة من بطاقة، في 126 00:07:16,680 --> 00:07:19,400 هذه الحالة، سوف نقول هناك كان خطأ القراءة. 127 00:07:19,400 --> 00:07:22,130 نحن لا نريد للمستخدم أن يفكر ذهب كل شيء بنجاح. 128 00:07:22,130 --> 00:07:24,750 وسوف نعود واحدة للخطأ. 129 00:07:24,750 --> 00:07:29,580 >> وأخيرا، فإننا سوف يغلق ملف و الخام لدينا، بطاقة لدينا دوت الخام، وتشير إلى أن 130 00:07:29,580 --> 00:07:34,070 كل شيء على ما يرام والعودة الصفر وهذا كل شيء. 131 00:07:34,070 --> 00:07:36,130 >> اسمي روب وكان هذا استرداد. 132 00:07:36,130 --> 00:07:42,102 >> [عزف الموسيقى]