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 НЕ дорівнює NULL. 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 НЕ дорівнює NULL. 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 >> Тепер ось, як я вже сказав, ми могли б спалахнули що у петлю або якщо 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 >> [Музика грає]