>> [음악 연주]
>> ROB 보덴 : 안녕하세요.
롭이야,하고의 희망하자 그 이 솔루션은 당신을 넣어하는 데 도움이
회복에 도로에.
그래서 지금 당장 시작하자.
>> 우리는 바로 우리가 걸 참조 우리가다는 것을 확인하기 위하여
제대로 복구 사용.
따라서 사용량이 뭔가해야 점 슬래시 복구 등을들 수있다.
>> 이제 우리는 예상을 열거야 카드는 RAW 파일을 점.
우리는 우리가 사용하고있는 것을 여기서 볼 일정 원시 밑줄 파일 이름,
우리는 해시를 가지고 여기까지하는 카드 원시 점으로 정의.
OK.
>> 그래서 우리는 있는지 확인 할 필요가 성공적으로 열려 있기 때문에 경우
, 우리는 사용자에게 경고해야하지 않았다.
하지만 한 가정, 우리는 지금입니다 크기 JPEG의 버퍼를 선언하는 것
이름의 길이를 파일.
그래서이 버퍼 될 것을 우리는에 sprintf를하는 것입니다.
>> 그래서 JPEG 파일 이름의 길이는 무엇입니까?
여기에, 우리는 그것의 볼 최대 8 개의 정의 해시.
왜 여덟?
그럼 주어진 파일 이름이 지정됩니다 제로 제로 제로 같은.
JPG는 그리고 우리는 백 슬래시 제로가 필요합니다.
그래서 우리가 할 수있는 버퍼가 필요 8 문자를 저장합니다.
이제 우리의 카운터를해야 할 것입니다 추적 할 것
번호 JPEG를 우리는 발견했다.
>> 그리고 마지막으로, 우리는해야 할 것입니다 처음에 null의 JPEG 파일
현재이 될 것입니다 어떤 우리가 작성하는 파일을 연다.
이제 우리가해야 할 것입니다 추가 버퍼.
이것은 우리의 sprintf와 동일하지 않습니다 이 버퍼는 하나입니다 버퍼
우리는 데이터를 읽고있는 것을 이 카드는 원시 점에서.
>> 그래서 버퍼가 될 것입니다 서명되지 않은 문자, 어떤 당신이 할 수있는
기본적으로 우리에게 바이트를 처리하고, 그의 크기의 블록 크기가 될 것
여기서, 우리는 당신에게로, 블록 크기는 512입니다.
그래서 JPEG 파일은 모든 것을 처리 할 수​​ 있습니다 512 바이트의 블록으로.
>> 이제 우리는 루프에가는거야 전체 파일에.
우리는 F 우리의 버퍼로 읽어 온거야 단일 바이트의 블록 크기의 배에서
이 카드는 RAW 파일을 점.
이제 F 반환 무엇을 읽을 수 있는가?
이 항목의 수를 반환 성공적으로 읽어.
그러므로, 512 바이트를 읽어 관리 그렇다면 우리는이인지보고 싶어
JPEG 또는는 JPEG 파일에 기록.
그리고 512 바이트를 반환하지 않은 경우, 다음 파일 중 하나가에 종료
우리는 y를 벗어날 수 있습니다이 경우 루프, 또는 오류의 일종이있다
우리는 또한 벗어날 수 있습니다하는 경우 Y 루프는, 그러나 우리는보고 싶은 것이다
뭔가 잘못 됐어요.
>> OK.
그래서 우리는 성공적으로 읽어 가정 512 바이트에서, 우리는 먼저 확인하려는
만드는 이들 바이트 우리 그냥 읽어 JPEG를 시작합니다.
그렇다면 우리의 버퍼의 JPEG 헤더입니다.
지금 JPEG 헤더는 무엇을하고 있습니까?
이제 살펴 보자.
>> 여기에, 우리는이 기능이 있는지 확인 황소를 반환하고, 그 황소 -
물론 여기에서, 우리는 볼 확인하는 경우 헤더 제로는이 상수에 해당하고
헤더 하나는이 상수에 해당하고 헤더 두 사람은이 상수 일
헤더 셋이하거나 동일 이러한 모든 상수가 어디 일정
바로 여기에 정의 된 해시하고 있습니다 우리는 사양에 당신을 말했다 정확히
JPEG는로 시작.
그리고이 기능은 예정 이 버퍼를 나타내는 경우는 true를 돌려
새로운 JPEG의 시작 그렇지 않은 경우는 false.
>> OK.
이 새로운 JPEG를 나타내는 않도록하는 경우, 우리는 먼저 확인하고 싶은 경우
JPEG 파일, 널 (null)와 동일하지 이 경우 우리는 그것을 닫습니다.
그리고 왜 우리가 확인해야합니까 null가 아닌 경우에 참조?합니다
그럼 첫 번째 JPEG는 우리 우리는 이미이되지 않습니다 발견
열린 JPEG 파일.
그리고, 우리는 그 닫으려고하면 우리는 아주 올바른 일을하고 아닙니다.
>> 그러나 이후의 모든 JPEG 그 우리가 열고, 우리는 닫으려면
이전 파일.
그래서 지금 우리는 우리대로의 sprintf를 사용하는 것입니다 우리가 사용하는 곳 전에 말했다
버퍼 JPEG 파일 이름.
그리고 우리는 JPEG 파일을 사용하는 것입니다 우리의 형식으로 형식의 이름을 지정합니다.
그게 뭔데?
여기에, 우리는 그것을 %의 제로 볼 3D.JPEG 곳 제로 세 단지
우리는 세 개의 정수를 사용합니다 말한다 이를 위해 0으로 채워.
그래서 이것은 우리가 제로 제로를 얻을 수 방법입니다 그래서 one.JPEG 제로 10.JPEG합니다.
>> 우리의 sprintf를 사용하는 것입니다.
그리고 우리는 삽입하고있는 정수 문자열이 마비 JPEG 파일입니다에
원래 제로인, 회수.
그래서 첫 번째 파일은 것입니다 오픈 제로 제로 제로 점 JPEG한다.
그리고 우리는 그렇게를 증가하고있는 우리가 열고 다음 파일은 0 0 될 것입니다
한 점 JPEG 우리는 그것을 증가합니다 다시 그래서 제로 제로 두 점있을거야
그래서 JPEG 및.
>> 괜찮아요.
그래서 지금 JPEG 파일의 내부 이름을, 우리는 이름을 가지고
우리가 원하는 파일.
우리는 f를 쓰기 위해 해당 파일을 열 수 있습니다.
OK.
그리고 다시 한번, 우리는 확인하기 위하여 검사 할 필요가 확인이 성공적으로 파일
그렇지, 다음 한 경우 이후 개설 일부 오류가 발생했습니다.
>> 그래서 지금 우리는 과거 왔 이것은 JPEG 부분입니다.
그리고 여기, 우리는 우리가 가고있는 참조 JPEG에 쓸.
그러나 우리는 먼저 말합니다이 검사를 JPEG 파일은 같은 널 (null)을하지 않습니다.
왜 우리가 필요합니까?
잘 JPEG 파일은 널 (null)과 같을 때 우리 현재 열려있는 JPEG있다.
>> 어떤 카드 점 원시 시작하는 경우 바이트의 무리와 함께 그
JPEG를 대변하지 않습니다?
그럼 우리가 원하는거야 그 바이트를 건너.
우리는이 검사를하지 않은 경우, 우리는거야 미개봉에 쓸 것
의 첫번째 512 바이트 파일 좋지 않은 카드.
OK.
>> 그럼, 우리는 열려있는 파일이 가정 우리는 그 파일에 쓸거야
우리는 우리의 버퍼가 512 바이트.
그리고 우리는 다시 한 번 확인 중입니다 확인이 성공적으로 512 바이트
그들이 아니었다면 때문에 기록 된 성공적으로 기록하고 뭔가
잘못된.
우리는 인쇄, 우리의 파일을 닫고 있습니다 뭔가 잘못 가고, 돌아갑니다.
가정 모두는, 제대로 간다 우리는 폐쇄 루프하겠습니다
기존 파일에 새 파일을 열고, 쓰기 그래서 새 파일에 데이터,
마지막으로,이 F를 읽을 때까지 0을 반환하는 방법
파일이 이루어집니다.
>> 그래서 지금 카드 판독이 끝난 것을, 우리 우리가 F 닫 거라고 볼
우리는 개방했지만, 마지막 파일 우리가 확인하는 경우 JPEG 파일
동일하지 널 (null)을 수행합니다.
그럼 F 가까이 때문에 같은 의미가 있습니다 우리는 우리가 폐쇄하고, 파일을 열 수있어
이전 파일하지만, 맨 마지막 우리는 열려있는 파일 폐쇄 결코 극복.
그래서이 무엇을하고 있는지입니다.
>> 그런데 왜 우리는 널 (null)을 확인해야합니까?
그럼 어떤 경우 카드 점 생하지 않았다 그 안에 하나의 JPEG이?
이 경우, 우리는 것 파일을 오픈하지 않습니다.
우리가 파일을 열지 않을 경우, 우리는해야 해당 파일을 닫으려고하지.
그래서이 검사가 수행하는 작업입니다.
>> 내가 전에 말했듯이 지금, 여기, 우리는 할 수 있었다 그 Y 루프 어느 경우를 부러
카드가있는 경우 종료 나있다 카드에서 읽는 몇 가지 오류가 발생했습니다.
따라서이 있었다 있는지 확인한다 에, 카드 읽기 오류
이 경우, 우리가 말할 것 오류 독서이었다.
우리는 사용자가 생각하고 싶지 않아 모든 것이 성공적으로 갔다.
그리고 우리는 오류에 대한 하나를 반환 할 수 있습니다.
>> 마지막으로, 우리는 F 우리의 원시 파일을 닫을 것이다, 우리 카드는 것을 나타 내기 위해, 원시 점
모든 것이 잘 돌아갔습니다 제로 그거야.
>> 내 이름은 롭이는 복구했다.
>> [음악 연주]