소엔보드 테스트

이미지 업로드 오늘자 날짜:2020-2-13 7:25:34 조회수:33
작성자 : 소엔
포인트 : 1348
가입일 : 2020-02-02 00:09:14
방문횟수 : 69
글 184개, 댓글 51개
소개 : SoEn 운영자입니다.
작성글 보기
쪽지 보내기
<?php
 // 이미지의 폭을 변경하여 새이름으로 저장하는 함수
 function resize_image($file, $wantwidth, $newfile) {
  list($width, $height) = getimagesize($file);
  // 비율 따지지 않고 무조건 폭에 맞춤
  $ratio = $width / $height;
  $newheight = $wantwidth/$ratio;
  $newwidth = $wantwidth;
   
  $exploding = explode(".",$file);
  $ext = end($exploding);
  
  // 확장자에 따라 이미지 바이너리 구함
  switch($ext){
   case "png":
    $src = imagecreatefrompng($file);
   break;
   case "jpeg":
   case "jpg":
   default:
    $src = imagecreatefromjpeg($file);
   break;
   case "gif":
    $src = imagecreatefromgif($file);
   break;
  }

  // 원하는 크기대로 새 이미지를 만든다.
  $dest = imagecreatetruecolor($newwidth, $newheight);
  
  // 크기 바꿔서 이미지 새로 만듬.
  imagecopyresampled($dest, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

  // 변경한 이미지 다시 저장. png는 0이 최고 품질, jpg는 100이 최고 품질. 품질 생략시 75 적용됨.
  switch($ext){
   case "png":
    imagepng($dest, $newfile);
   break;
   case "jpeg":
   case "jpg":
   default:
    imagejpeg($dest, $newfile);
   break;
   case "gif":
    imagegif($dest, $newfile);
   break;
  }
  
  imagedestroy($dest);
 }

 // 이미지를 저장할 경로
 $imagepath = "sbimage/";   
 
 // CKEditor의 id, 업로드한 파일의 정보를 받을 함수 번호, 브라우저 언어 코드.
 // 4.13에서는 이 정보를 사용하지 않고 json으로 리턴한다.
 //$CKEditor = $_GET['CKEditor'] ;
 //$funcNum = $_GET['CKEditorFuncNum'] ;
 //$langCode = $_GET['langCode'] ;

 // 이미지 업로드 폼의 File 컨트롤의 ID가 upload로 고정되어 있다.
 if (isset($_FILES['upload'])) {
  $name = $_FILES['upload']['name'];
  $oripath = $imagepath.$name;
  
  move_uploaded_file($_FILES["upload"]["tmp_name"], $oripath);
  
  // 새 이름 만들어 폴더에 나누어 넣기. 이름 중복도 체크
  $newname = $imagepath."resize_" . $name;
  resize_image($oripath, 720, $newname);
  // unlink($oripath);
 
  // 업로드후 이미지를 보여줄 URL 을 만듭니다.
  $url = $newname ;
 } else {
  // $message = '업로드된 파일이 없습니다.';
 }

 // 이미지 업로드는 iframe을 사용해서 처리되므로 parent 와 통신하기 위해서 자바스크립트를 사용합니다.
 //echo "<script type='text/javascript'>; window.parent.CKEDITOR.tools.callFunction($funcNum, '$url', '$message')</script>";
 // CKEditor 새 버전에는 json 형태로 리턴해야 한다고 함.
 $json = '{"filename" : "'. $name .'", "uploaded" : 1, "url":"'. $url .'"}';
 echo ($json);
?>


 



개발자의 천국 SoEn

목록보기 삭제 수정 신고 스크랩

소엔 2월13일 7:27:32  

더 할 것들 -더 작은 이미지는 그대로 유지 -월별, 일별로 폴더 나눠 넣기 -중복 파일 체크 -압축 정도와 이미지 품질, 크기 비교해 볼 것


로그인하셔야 댓글을 달 수 있습니다.