본문 바로가기
프로그램.코딩

이미지 리사이징 재귀함수

by landzz 2014. 1. 17.


스마트폰등에서 이미지첨부할경우 이미지해상도가 너무커서

적정한 사이즈로 변경하는 재귀함수.


나중에 찾아보기 편하도록 기록으로 남김.



===============================================================

if($_GET['mode'] == 'resize'){

echo "<div >이미지 리사이징</div>";

function _resize($_file,$_depth=0){

$_name = basename($_file);

$_dir = dirname($_file);

$_indent = ($_depth +1)*20;

$_info = _get_file_info($_file);

$_org = $_dir."/src_".$_name;

echo "<div style='margin-left:{$_indent}' class='gray'>파일 : [{$_info['type']}/{$_info['size_txt']}/{$_info['width']}]{$_name}";

if(file_exists($_org)){

$_info2 = _get_file_info($_org);

echo "<div class='blue'>└ 원본 : [{$_info2['type']}/{$_info2['size_txt']}/{$_info2['width']}] src_{$_name}</div>";

}

if($_info['type'] == 'image'){

if(strpos($_name,'src_') === false){

if($_info['width'] > 480){

$_org = $_dir."/src_".$_name;

//rename($_file,$_org);

$_thumb = $_file;

//Thumbnail_Create2($_org,$_thumb,1500,0,'v');

echo "&nbsp;&nbsp;<span class='red'>[변환: {basename($_file)} => {basename($_org)} ]</span>";


}

}

}

echo "</div>";

flush();

}

function _readdir($_dir,$_depth=0){

if(is_dir($_dir)){

$_name = basename($_dir);

$_indent = ($_depth)*20;

$_bold = $_depth < 2 ? 'bold' : 'blue pad2';

echo "<div class='".$_bold."' style='margin-left:".$_indent."px;'>[".$_name."]</div>";

flush();

if($handle = opendir($_dir)){

while (($file = readdir($handle)) !== false) {

if($file != '.' && $file != '..'){

$_file = $_dir."/".$file;

if(is_dir($_file)){

_readdir($_file,$_depth +1);

}else{

_resize($_file,$_depth);

}

}

}

}

}else{

_resize($_dir);

}

}

$_dirs = "_data/movie";

_readdir($_dirs);

echo "<hr /> <div class='bold pad2'>작업종료!  [<a href='?'>처음</a>]</div><br /><br />";

}

===============================================




댓글