개발자 놀이/HTML | CSS | Javascript | PHP
[php] 썸네일 만들기
ㅁ ㅣ ㅊ ㅣ ㄴ ㅏ ㅇ ㅣ
2022. 8. 10. 17:49
<?php
$user_dir = '/workspace/paki/';
$working_dir = $user_dir.'thumbnail_practice/';
$img_dir = $working_dir.'img/';
$files = scandir($img_dir);
// 그림파일 아닌 것과 폴더들은 제외시키기 위해
$files_diff = array();
// 스캔한 리스트 쭉 돌아가면서, 폴더들과 non그림파일을 새 어레이에 넣음.
foreach($files as $file){
if(is_dir($img_dir.$file)){
$files_diff[] = $file;
} else if(!@getimagesize($img_dir.$file)) {
array_push($files_diff, $file);
}
}
// 폴더 및 그림파일 아닌 것들은 제외시킴.
$files = array_diff($files, $files_diff);
// 그림파일에 대해서만 썸네일 추출
foreach($files as $file){
$file_path = pathinfo($img_dir.$file, PATHINFO_DIRNAME);
$file_basename = pathinfo($img_dir.$file, PATHINFO_BASENAME);
$file_filename = pathinfo($img_dir.$file, PATHINFO_FILENAME);
$file_extension = pathinfo($img_dir.$file, PATHINFO_EXTENSION);
$img_name = $img_dir.$file_basename;
$img_info = @getimagesize($img_name);
//
$mime = $img_info['mime'];
$img_width = $img_info[0];
$img_height = $img_info[1];
$new_img_filepath = $img_dir.'thumbnail/';
// 썸네일 저장할 폴더가 없다면, others가 write 가능한 폴더 새로 생성
$oldumask = umask(0);
if(!is_dir($new_img_filepath)){
mkdir($new_img_filepath,0777,true);
}
umask($oldumask);
$new_img_name = $new_img_filepath.$file_filename.'_THUMB.'.$file_extension;
$new_img_width = $img_width;
$new_img_height = $img_height;
// 폭이 100 초과된다면, 폭 100으로 썸네일 생성
if($img_width >100){
$new_img_width = 100;
$new_img_height = floor($img_height * ($new_img_width / $img_width));
$create_fn = 'imagecreatefrom'.explode('/',$mime)[1];
$save_fn = 'image'.explode('/',$mime)[1];
$new_img_resource = imagecreatetruecolor($new_img_width, $new_img_height);
$img_resource = $create_fn($img_name);
imagecopyresampled($new_img_resource, $img_resource, 0,0, 0,0, $new_img_width, $new_img_height, $img_width, $img_height);
$save_fn($new_img_resource, $new_img_name, 100);
}
}
?>