ㅁ ㅣ ㅊ ㅣ ㄴ ㅏ ㅇ ㅣ 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);
	}

}
			
?>