몇 가지 문제점을 발견했습니다.
1. 썸네일 생성함수를 makeThumnail()로 제어하고 계시는데, 이보다는 resampleImage() 함수로 직접 접근하시는 편이 좋겠습니다. makeThumnail()로 접근하시는 경우 랜덤 이미지로 출력되는 이미지와 본문에 표시되는 이미지의 썸네일 둘 다 xxxx.thumbnail.xxx로 생성하기 때문에 불필요하게 썸네일을 재생성하는 경우가 있을 수 있습니다. xxxxx.rpvThumnail.xxx 라는 이름으로 cache/thumbnail/x 폴더로 이미지를 복사하신 후, 이미지를 가지고 resampleImage() 함수를 돌리시는 것이 제 구현의도와 맞는 것 같습니다.
2. 썸네일 생성시, 기존 파일이 존재하는지 체크가 필요합니다. 기존 파일이 있음에도 다시 썸네일을 생성하는 것은 불필요하다고 생각합니다.
3. 출력되는 이미지에서 width, height 속성 값을 제외해 주십시오. 디폴트로 155*122의 사이즈로 크기가 제한된 썸네일을 생성하고 있는데, resampleImage() 함수는 이 크기에 딱 들어가도록 이미지를 최적화하여 썸네일로 저장합니다.
4. 파일 확장자 체크는 Path::getExtension() 함수를 이용하시는 것이 어떨까 합니다. 구현된 함수가 있으면 이용하는 것이 좋겠지요. 채크는 Path::getExtension($file) == ".jpg"의 형식으로 합니다. 비슷한 것으로 쿼리 실행은 DBQuery 클래스에 함수가 구현되어 있으니 이를 이용해 보시면 어떨까 합니다.
5. attach 디렉토리에서 전체 이미지 리스트를 불러들일 때 예외 적용이 추가되어야 할 것 같습니다. attach에는 55423425.jpg와 같은 숫자 형식의 첨부파일도 저장되지만, favicon.gif나 watermark.gif 등도 저장되고 있습니다.
6. PNG는 지원 안 하시나요?
워터마크가 생성되지 않는 이유는 워터마크 파일을 지정하고 있는 변수가 없기 때문이지요. makeThumbnail() 함수는 워터마크 정보를 $waterMarkArray라는 전역변수를 통해 접근하고(여백 정보는 $paddingArray), resampleImage()가 이 변수를 7번 매개변수로 전달 받습니다. 따라서 makeThumail(), resampleImage()를 사용하시기 전에 워터마크 정보를 생성해 주시지 않으면 워터마크 정보가 없는 것으로 처리됩니다.
로직은 딱 잡혀 있더군요. 자잘한 오류 체크 정도만 해결하시면 되겠습니다.:)
rev.657에 함수 보완이 있었으니 업데이트해 주세요. 내부 루틴이 강화된 것 뿐이니 사용법에 변화는 없습니다.
graphittie (2006-07-20 09:45:29)에 의해 마지막으로 수정