본문 바로가기
PHP

[PHP] 썸네일 처리 빠르게 구현하기

by teamnova 2021. 5. 16.
728x90

안녕하세요.

클라이언트와 서버 간 이미지 트래픽을 줄이기 위해서 썸네일 작업을 진행할때가 있습니다.

 

이번에는 php로 썸네일 처리하는 기능을 빠르게 구현하는 방법을 공유하겠습니다!

 

리눅스 서버에서 웹서버가 설치 되어 있다고 가정하고 포스팅 하겠습니다.

 

php 썸네일 소스코드 보기

stickode.com/detail.html?no=2115

 

스틱코드

 

stickode.com

 

 


사준 준비 사항

썸네일 작업처리할 원본이미지


웹루트 디렉토리(/var/www/html) 에서 이미지를 보관할 폴더를 생성 하고,

생성된 폴더에 썸네일 테스트할 이미지를 넣습니다.

 

저는 /var/www/html/picture/profile 폴더를 만들었고, 해당 경로에 원본이미지를 넣었습니다.

썸네일 이미지가 보관될 /var/www/html/picture/profile/thumbnail 폴더도 만들어 주시면 됩니다.

 

폴더 권한을 테스트를 위해서 777 권한으로 수정합니다.

 

폴더 권한 변경 명령어: chmod 777 폴더명/

 

1. 크롬에서 원본이미지 보기

크롬에서 원본 이미지 보기

크롬에서 원본이미지로 접근가능한지 확인 합니다.

이미지가 출력되었다면 테스트 가능한 사전 셋팅은 끝났다고 생각하시면 됩니다.

 

2. 썸네일 처리 소스코드 (파일명: thumbnailTest.php)

<?php

     function make_thumb($file, $thumb, $t_width,$t_height)
  {
    $source_image = imagecreatefromstring(file_get_contents($file)); //파일읽기
    $width = imagesx($source_image);
    $height = imagesy($source_image);

    $virtual_image = imagecreatetruecolor($t_width, $t_height); //가상 이미지 만들기

    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $t_width, $t_height, $width, $height); //사이즈 변경하여 복사

    if(imagepng($virtual_image, $thumb)) // png파일로 썸네일 생성
    {
      echo "썸네일 처리 성공";
    }
    else {
      echo "썸네일 처리 실패";
    }

    
  }

  $original_image = "default_image.png";
  $width = 100;
  $height = 100;
  make_thumb('picture/profile/'.$original_image, './picture/profile/thumbnail/'.'('.$width.'x'.$height.')'.$original_image, $width, $height);

?>

 

3. 썸네일 처리 요청 및 요청 결과

원본 이미지 썸네일 처리 여부 확인

 

4. 리눅스 서버 썸네일 이미지 생성 여부 확인

리눅스 서버의 썸네일 이미지 저장 확인

 

5. 원본 이미지 와 썸네일 이미지 크기 비교

좌: 원본 이미지 정보 / 우: 썸네일 처리된 이미지 정보

원본이미지 크기는 512 x 512, 10.1 KB

썸네일이미지 크기는 100 x 100, 7.45 KB 입니다.

 

약 2.6 KB 가 줄어든 것을 확인할 수 있습니다.

 

트래픽이 많이 발생하는 서비스에서는 트래픽 부담을 줄이는 것이 중요할 것 같습니다.

그런 의미에서 2.6 KB만 줄여도 유의미한 수치일수도 있을 것 같습니다.

 

6. 크롬에서 썸네일이미지 보기

크롬에서 썸네일 처리된 이미지 보기