>> [Музика грає]
>> ROB BOWDEN: Привет.
Я Роб, і будемо сподіватися, що це рішення допомагає поставити вас
на шляху до одужання.
Так що давайте почнемо.
>> Ми бачимо, що одразу ми просто щоб переконатися, що ми
з використанням Відновлення правильно.
Таким чином, використання має бути просто щось як точка слеш відновити.
>> Тепер ми збираємося відкрити очікується карта точка необроблений файл.
Ми бачимо тут, що ми використовуємо постійна ім'я файлу сировину підкреслення,
які тут у нас є хеш визначається як карта точка в сирому вигляді.
ОК.
>> Таким чином, ми повинні переконатися, що це успішно відкритий, тому що, якщо він
ні, то ми повинні попередити користувача.
Але якщо припустити, що він зробив, ми тепер збирається оголосити буфер розміром JPEG
довжини імені файлу.
Так що це буде буфер, який ми збираємося Sprintf в.
>> Так що ж таке JPEG файлу Довжина імені?
Тут, нагорі, ми бачимо, що це хеш визначається як восьми.
Так чому вісім?
Ну даний файл буде називатися щось на зразок нульового нульовий нулю.
JPG, а потім ми повинні зворотну косу риску нульовий.
Тому нам потрібен буфер, який може зберігати восьми символів.
Тепер ми збираємося є лічильник Ось збирається відстежувати
Номер у форматі JPEG ми знайшли.
>> І, нарешті, ми збираємося мати Файл JPEG, який спочатку нульової
яка буде в даний час відкрити файл, що ми пишемо, щоб.
Тепер ми збираємося, щоб мати додатковий буфер.
Це не те ж саме, як наш Sprintf буфер, де цей буфер один
що ми читаємо в даних з карти точка в сирому вигляді.
>> Таким чином, буфер буде з непідписані символи, які ви можете
в основному тільки розглядати нас байт, і це буде розміру розміру блоку
де, як ми говоримо вам, розмір блоку 512.
Так у форматі JPEG можна лікувати всі у вигляді блоків по 512 байт.
>> Тепер ми збираємося петлі протягом усього файлу.
Ми збираємося е читати в нашій буфера а поодинокі разів розмір блоку від
карта точка необроблений файл.
Тепер що ж е читати повернутися?
Вона повертає кількість елементів що він успішно читав.
Так що, якщо йому вдалося прочитати 512 байт, то ми хочемо бачити, чи було це
JPEG або написати це у файл JPEG.
І якщо це не повернулися 512 байт, то або файл закінчилася
цьому випадку ми будемо вирватися з у петля, або є якась помилка
в цьому випадку ми також вирватися з у петлі, але ми будемо хочете повідомити
що щось пішло не так.
>> ОК.
Так якщо припустити, що ми успішно читати в 512 байт, ми хочемо першої перевірки
зробити, що ці байти, що ми щойно прочитав в почати JPEG.
Так що якщо є заголовок JPEG нашого буфера.
Тепер, що це таке заголовок JPEG робиш?
Давайте подивимося.
>> Тут, нагорі, ми бачимо, що ця функція повернення бика, і, що бик -
ну от, ми перевіряємо, щоб переконатися, Тема нулю дорівнює цю константу і
заголовок один дорівнює цю константу і Тема два дорівнює цю константу,
Тема три одно це чи це постійна, де всі ці константи
просто хеш визначається прямо тут і саме те, що ми говорили, у специфікації
що JPEG починається з.
І тому ця функція просто буде повернутися вірно, якщо цей буфер представляє
початок нового JPEG і в іншому випадку.
>> ОК.
Так що, якщо це дійсно представляє нову JPEG, то спочатку ми хотіли, щоб перевірити, якщо
Файл JPEG не дорівнює нуль, в цьому випадку ми закрити його.
І так чому ми повинні перевірити щоб побачити, якщо це не порожній?
Ну найперший JPEG, що ми знайти ми не будемо вже є
відкрити файл JPEG.
Так от, якщо ми намагаємося закрити це, то ми не робимо щось зовсім вірно.
>> Але кожний наступний JPEG, що ми відкриваємо, ми хочемо, щоб закрити
попередній файл.
Так що тепер ми збираємося використовувати Sprintf як ми сказав колись, де ми використовуємо
Файл буфера JPEG.
І ми збираємося використовувати файл JPEG назвати формат, як наш формат.
І що це таке?
Тут, нагорі, ми бачимо, що це відсотків нуля 3D.JPEG де нуль три просто
говорить, що ми будемо використовувати три цілих для цього заповнюються нулями.
Так що це, як ми отримаємо нуль нуль one.JPEG і нульовий 10.jpeg і так далі.
>> Ми збираємося використовувати Sprintf.
І ціле число, яке ми вставки в рядок оніміння в форматі JPEG
відновлені, який спочатку нулю.
Таким чином, перший файл відкритий збирається бути нуль нуль нуль точка JPEG.
А потім ми збільшуючи його так наступний файл ми відкриваємо буде нуль-нуль
одна точка JPEG і ми будемо збільшувати його знову так що це буде нуль нуль два точка
JPEG і так далі.
>> Добре.
Так що тепер всередині файлу JPEG назвати, у нас є ім'я
файл, який ми хочемо.
Ми можемо е відкрити цей файл для запису.
ОК.
І ще раз, ми повинні перевірити, щоб зробити впевнені, що файл успішно
відкрив, так як якщо це було не так, то є якась помилка.
>> Так що тепер ми отримали минулого це частина JPEG.
І ось, ми бачимо, що ми збираємося для запису у форматі JPEG.
Але ми спочатку повинні цю перевірку в якому говориться, якщо файл JPEG НЕ дорівнює NULL.
Навіщо нам це?
Ну файлу JPEG дорівнює нуль, коли ми В даний час є відкрита JPEG.
>> Що робити, якщо карта точка сировину починається з купою байтів,
не уявляють JPEG?
Тоді ми збираємося хочете пропустити тих байт.
Якщо ми не маємо цю перевірку, то ми збираюся написати, щоб в нерозпечатаній упаковці
подати першу 512 байт карта що не є добре.
ОК.
>> Так припускаючи у нас є відкритий файл, то ми збираємося написати на цей файл
512 байт, що ми маємо в нашому буфері.
І ми в черговий раз перевіряючи, упевнений, що 512 байт успішно
були написані, тому що якщо вони не були успішно записаний, то щось
пішло не так.
Ми будемо закривати файли, друкувати, що щось пішло не так, і повернення.
Припускаючи, що все йде правильно, то ми будемо тримати цикл закриття
старий файл, відкривши новий файл, лист дані в новий файл, і тому
, Поки, нарешті, це е не читати повертає нуль, який засоби
що файл робиться.
>> Так що тепер читання карт закінчиться, ми бачити, що ми збираємося е закрити
останній файл, який ми повинні були відкриті, але ми перевіряємо, якщо файл JPEG
НЕ дорівнює NULL.
Ну е близько має сенс, тому як ми відкриваємо файли, ми закриваємося
попередній файл, але в останній файл, який ми відкрили ніколи не закривається.
Так ось що це робить.
>> Але чому ми повинні перевірити на нуль?
Ну що робити, якщо карта точка сировина не зробив мати єдину JPEG всередині нього?
У цьому випадку ми повинні були б ніколи не відкрив файл.
І якщо ми ніколи не відкрити файл, ми повинні Не намагайтеся закрити файл.
Так ось що ця перевірка робить.
>> Тепер ось, як я вже сказав, ми могли б спалахнули що у петлю або якщо
карта закінчилася або якщо є деякі помилки читання з карти.
Так що це перевіряти, якщо було помилка при читанні з карти, в
цьому випадку, ми будемо говорити там було помилка читання.
Ми не хочемо, користувач думати все пройшло успішно.
І ми будемо повертати одне на помилку.
>> Нарешті, ми е закрити наш необроблений файл, наша карта точка сировину, щоб показати, що
все пройшло добре і повернення нулю і все тут.
>> Мене звуть Боб, і це було відновити.
>> [Музика грає]