썸네일 이미지 생성 문의입니다

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
썸네일 이미지 생성 문의입니다

QA

썸네일 이미지 생성 문의입니다

본문

아래에서 이미지의 가로를 400픽셀로 해서 썸네일 생성을 하고 싶은데 4000*3000 이미지는 문제가 없는데 3000*4000 이미지는 가로를 3000을 이용해서 계산되지않고 4000을 기준으로 해서 4000이 나모면서 세로가 400 보다 작은 썸네일이 생기네요~~ 그리고 생성된 이미지가 원본이미지의 방향에서 반시계방향으로 90도 회전한 형태로 생기네요~~~~ 뭐가 문제인가요~


<?php
// 데이터 디렉토리 경로
$data_dir = G5_DATA_PATH . '/file';
// 모든 게시판 ID 디렉토리 가져오기
$board_dirs = glob($data_dir . '/*', GLOB_ONLYDIR);
// 썸네일 크기 설정
$thumb_width = 400; // 썸네일 이미지 넓이
$crop_size = 3000; // 크롭할 이미지 크기
// 각 게시판 디렉토리에서 이미지 파일 처리
foreach ($board_dirs as $board_dir) {
    $bo_table = basename($board_dir); // 게시판 ID 추출
    $images = glob($board_dir . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE); // 이미지 파일 목록 가져오기
    foreach ($images as $image) {
        $filename = basename($image); // 파일 이름 추출
        // 접두어가 'thumb-'가 아닌 경우에만 처리
        if (strpos($filename, 'thumb-') === false) {
            $save_path = $board_dir; // 썸네일을 저장할 위치 (게시판 ID 디렉토리)
            // 원본 이미지의 크기 가져오기
            list($original_width, $original_height) = getimagesize($image);
            // 중앙을 기준으로 크롭할 위치 계산
            $crop_x = max(0, ($original_width - $crop_size) / 2);
            $crop_y = max(0, ($original_height - $crop_size) / 2);
            $crop_width = min($crop_size, $original_width);
            $crop_height = min($crop_size, $original_height);
            // 크롭된 이미지 리소스 생성
            $cropped_image = imagecreatetruecolor($crop_width, $crop_height);
            $source_image = imagecreatefromstring(file_get_contents($image));
            // 이미지 크롭
            imagecopyresampled($cropped_image, $source_image, 0, 0, $crop_x, $crop_y, $crop_width, $crop_height, $crop_width, $crop_height);
            // 썸네일 크기 계산 (400x400으로 리사이즈)
            $thumb_height = $thumb_width; // 썸네일의 세로 크기
            // 새로운 썸네일 이미지 리소스 생성
            $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
            // 썸네일 리사이즈
            imagecopyresampled($thumb, $cropped_image, 0, 0, 0, 0, $thumb_width, $thumb_height, $crop_width, $crop_height);
            // 썸네일 이름 생성
            $thumb_name = "thumb-{$bo_table}-" . pathinfo($filename, PATHINFO_FILENAME) . "_{$thumb_width}x{$thumb_height}.jpg";
            imagejpeg($thumb, $save_path . '/' . $thumb_name);
            imagedestroy($thumb); // 메모리 해제
            imagedestroy($source_image); // 메모리 해제
            imagedestroy($cropped_image); // 메모리 해제
            // 썸네일 URL 생성
            $save_url = G5_DATA_URL . '/file/' . $bo_table; // 이미지를 저장할 위치 URL
            $original_url = $save_url . '/' . $filename; // 원본 이미지 URL
            // 썸네일 출력 (클릭 시 원본 이미지 팝업)
            if (isset($thumb_name)) {
                echo '<div class="grid-item thumbnail">';
                echo '<a href="' . $original_url . '" target="_blank" onclick="window.open(\'' . $original_url . '\', \'popup\', \'width=800,height=600\'); return false;">';
                echo '<img src="' . $save_url . '/' . $thumb_name . '" alt="썸네일" style="max-width: 100%; height: auto;">'; // 썸네일 이미지 출력
                echo '</a>';
                echo '</div>';
            }
        }
    }
}
?>
 

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로