이미지 회전반영과 썸네일 생성 > Web 끄적임

본문 바로가기
사이트 내 전체검색

Web 끄적임

PHP 이미지 회전반영과 썸네일 생성

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 3,709회 작성일 23-04-21 13:58

본문

<?php


/*----------------------------------------------------------------------------- 

 * 촬영 회전값 복구

 *

 -----------------------------------------------------------------------------*/


//이미지 회전

function Jpg_Rotation($file_path, $jpg_quality) {


//파일이름 (경로제거)

$file_name = basename($file_path);

//이미지 정보

$imgsize = @getimagesize($file_path);


//정보가 없다면

if (!$imgsize) return;


//확장자 정의

$extensions = array(1 => 'gif', 2 => 'jpg', 3 => 'png', 18 => 'webp');

//파일확장자 재정의

$file_ext = $extensions[$imgsize[2]];


//jpg 아니면 리턴

if ($file_ext !== "jpg") return;


//새 이미지를 만든다

$im = imagecreatefromjpeg($file_path);


//이미지 방향찾기

$exif = @exif_read_data($file_path);


//기본각도

$degrees = 0;


//이미지 회전

if (!empty($exif['Orientation'])) {

switch ($exif['Orientation']) {

case 8:

$im = imagerotate($im, 90, 0);

$degrees = 1;

break;


case 3:

$im = imagerotate($im, 180, 0);

$degrees = 1;

break;


case 6:

$im = imagerotate($im, -90, 0);

$degrees = 1;

break;

}

}

//회전값이 있다면 저장

if ($degrees == 1) {

imagejpeg($im, $file_path, $jpg_quality);

}


imagedestroy($im);

}



/*----------------------------------------------------------------------------- 

 * 썸네일 이미지

 *

 -----------------------------------------------------------------------------*/

function ThumbnailImage($image_path, $save_path, $image_quality=100) {

//파일이름 (경로제거)

$file_name = basename($image_path);


//저장위치

$save_image =  $save_path.$file_name;


//썸네일 비율

$percent = 0.1;


//이미지 정보

list ($image_width, $image_height, $image_type) = getimagesize($image_path);


//두합이 1000px미만이면

$sum_size = $image_width + $image_height;

if ($sum_size < 1000) {

$new_width = $image_width;

$new_height = $image_height;

}

else {

$new_width = $image_width * $percent;

$new_height = $image_height * $percent;

}


//이미지 생성

$new_image = imagecreatetruecolor($new_width, $new_height);


//$source_image

if (!empty($image_type)) {

switch ($image_type) {

case 1: //gif

$source_image = imagecreatefromgif($image_path);

@imagecopyresampled($new_image, $source_image, 0, 0, 0, 0,  $new_width, $new_height, $image_width, $image_height);

//썸네일 저장

imagegif($new_image, $save_image);

break;


case 2: //jpeg

$source_image = imagecreatefromjpeg($image_path);

@imagecopyresampled($new_image, $source_image, 0, 0, 0, 0,  $new_width, $new_height, $image_width, $image_height);

//썸네일 저장

imagejpeg($new_image, $save_image, $image_quality);

break;


case 3: //png

$source_image = imagecreatefrompng($image_path);

@imagecopyresampled($new_image, $source_image, 0, 0, 0, 0,  $new_width, $new_height, $image_width, $image_height);

//썸네일 저장

imagepng($new_image, $save_image);

break;


case 18: //webp

$source_image = imagecreatefromwebp($image_path);

@imagecopyresampled($new_image, $source_image, 0, 0, 0, 0,  $new_width, $new_height, $image_width, $image_height);

//썸네일 저장

imagewebp($new_image, $save_image);

break;

}

}


imagedestroy($new_image);

}

?>


추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

접속자집계

오늘
1,032
어제
1,160
최대
2,110
전체
53,342
접속자 : 10 모바일버전

Copyright © NEION All rights reserved.