그러냐

네이버 스마트 에디터 이미지 리사이즈 본문

php

네이버 스마트 에디터 이미지 리사이즈

관절분리 2019. 4. 3. 15:02
반응형

단순 보여지는 사이즈 변경이 아닌 업로드이미지 파일 자체의 사이즈를 줄인다

 

editorfile/php/FileUploader_html5.php 의 기존 소스에 아래와 같이 변경한다

 

html5가 아닌 경우에는 FileUploader.php을 수정하면 되는데 그 부분은 어렵지 않으므로 생략한다

 

resizeWH() 함수와 resize_copy_b() 함수를 추가했으며 소스하단에서 너비가 1280이 넘으면 기존 소스와 분기하도록 했다.

 

<?php

function resizeWH($w,$h) {
	$percent = 0.8;
	$cnt = 0;
	while($w>1280){
		$w = $w*$percent;
		$h = $h*$percent;
		$cnt++;
		if($cnt>100) {
			break;
		}
	}
	return array($w,$h);
}

function resize_copy_b($img,$get_FILENAME,$pdsDIR,$wh){

	$ext = explode('.',$get_FILENAME);
	$width = imagesx($img);
	$height = imagesy($img);

	$new_width = $wh[0];
	$new_height = $wh[1];

	$image_p = imagecreatetruecolor($new_width, $new_height);
	imagecopyresampled($image_p, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

	if($ext[count($ext)-1] == "jpg"||$ext[count($ext)-1] == "jpeg"){
		imagejpeg($image_p, $pdsDIR.$get_FILENAME, 100);
	}else if($ext[count($ext)-1] == "png"){
		imagepng($image_p, $pdsDIR.$get_FILENAME, 100);
	}else if($ext[count($ext)-1] == "gif"){
		imagegif($image_p, $pdsDIR.$get_FILENAME, 100);
	}
}

 	$sFileInfo = '';
	$headers = array(); 
	foreach ($_SERVER as $k => $v){   
  	
		if(substr($k, 0, 9) == "HTTP_FILE"){ 
			$k = substr(strtolower($k), 5); 
			$headers[$k] = $v; 
		} 
	}
	$file = new stdClass; 
	$temp_var= explode(".", rawurldecode($headers['file_name']));
	$tmp_nm = str_replace("", "", time().'-'.rand(0,100).'.'.$temp_var[count($temp_var)-1]);

	$file->name = $tmp_nm;//rawurldecode($headers['file_name']);	
	$file->size = $headers['file_size'];
	$file->content = file_get_contents("php://input"); 

	$newPath = '../upload/'.iconv("utf-8", "cp949", $file->name);

	$img = imagecreatefromstring($file->content);
	$width = imagesx($img);
	$height = imagesy($img);
	if($width>1280){
		$wh = resizeWH($width,$height);
		resize_copy_b($img,iconv("utf-8", "cp949", $file->name),'../upload/',$wh);
		
		$sFileInfo .= "&bNewLine=true";
		$sFileInfo .= "&sFileName=".$file->name;
		$sFileInfo .= "&sFileURL=https://".$_SERVER["HTTP_HOST"]."/editorfile/upload/".$file->name;
	}else{
		if(file_put_contents($newPath, $file->content)) {
			$sFileInfo .= "&bNewLine=true";
			$sFileInfo .= "&sFileName=".$file->name;
			$sFileInfo .= "&sFileURL=https://".$_SERVER["HTTP_HOST"]."/editorfile/upload/".$file->name;
		}
	}
	echo $sFileInfo;
 ?>

 

반응형