썸네일 관련하여 게시판을 생성하는데.. 정보
썸네일 관련하여 게시판을 생성하는데..본문
썸네일 사용하려고 게시판을 생성하는데
게시판에 스킨파일을 넣었는데
다른 설정을 해줘야 하나요~?
처음 파일 등록할때도 썸네일에 대해서 파일이미지가 보이지 않더라구요 무엇이 문제인지를
알수가 없네요..
---thumbnail.lib.php---
<?php
// 디렉토리네 파일 삭제
function dell_file($rx_dir){
$dir_open = opendir($rx_dir);
while (false !== ($dir_read = readdir($dir_open))) {
if (is_file($rx_dir.'/'.$dir_read)) @unlink($rx_dir.'/'.$dir_read);
}
closedir($dir_open);
}
// 디렉토리네 파일선택 삭제
function dell_one($rx_dir, $filename){
$dir_open = opendir($rx_dir);
@unlink($rx_dir.'/'.$filename);
closedir($dir_open);
}
// 경고창
function alerts($text){
echo "<script lange='java script'>alert(\"$text\");</script>";
}
// 임시파일 확인
function rinix_file($dir){
global $board_skin_path;
$file_dir_open = opendir("$dir");
$f = 0;
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$f++;
}
}
closedir($file_dir_open);
$url = $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'];
$url = str_replace("&", "||", $url);
if($f > 0) $text = "<a href='$board_skin_path/suspension.filedell.php?url=$url'>임시파일 <font color='red'>{$f}개</font>가 있습니다. 삭제 하시겠습니까?</a>";
return $text;
}
// 부족한 섬네일 확인
function rinix_tb($dir, $tb_width, $tb_height){
global $board_skin_path, $bo_table;
$tb_dir = $dir."/thumbnail";
$file_dir_open = opendir($dir);
$i = 0;
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$type = file_type($dir_read);
if($type == "jpg" || $type == "gif" || $type == "png"){
// 이미지 비률 수정및 이미지 포멧방식 체크
list($width, $height, $img_type) = getimagesize("$dir/$dir_read");
if($img_type >= 1 || $img_type <= 3){
if($tb_width < $width || $tb_height < $height){
if(!is_file("$tb_dir/$dir_read")){
$i++;
}
}
}
}
}
}
closedir($file_dir_open);
$url = $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'];
$url = str_replace("&", "||", $url);
if($i > 0){ $text = "<a href='$board_skin_path/thumbnail.make.php?tb_width=$tb_width&tb_height=$tb_height&bo_table=$bo_table&url=$url'>섬네일 <font color='red'>{$i}개</font>가 필요합니다. 생성 하시겠습니까?</a>"; }
return $text;
}
function file_type($file){
$file = explode(".", $file);
$no = count($file)-1;
$type = $file[$no];
return $type;
}
function make_tb($fname, $bo_table, $tb_x, $tb_y){
echo $fname." / ".$bo_table." / ".$tb_x." / ".$tb_y."<br>";
// 이미지 컷팅위치 0~10 까지
$r_xcut = 5;
$r_ycut = 2;
$r_filename = $fname; // 파일이름
$rr_filename = "../../../data/file/$bo_table/".$r_filename;
$r_save_root = "../../../data/file/$bo_table/thumbnail"; // 저장장소
// 이미지 비률 수정및 이미지 포멧방식 체크
list($r_width, $r_height, $r_img_type) = getimagesize($rr_filename);
$r_fname = $r_save_root."/".$r_filename;
// 설정된 썸네일 크기
$r_img_width = $tb_x;
$r_img_height = $tb_y;
// 이미지 크기 검사
if($r_img_width < $r_width && $r_img_height < $r_height){ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 클때
// 가로 크기를 기준으로 섬네일 가로크기비률에 맞춰 사이즈를 조정한다.
$r_percent = $r_width / $r_img_width;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
// 위에서 사이즈 조정을 했을시 여백이 생긴다면 다시 세로를 기준으로 사이즈를 조정한다.
if($r_img_height > $r_new_height){
$r_percent = $r_height / $r_img_height;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
}
}else{ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 작을때
// 생성될 이미지 사이즈와 원본이미지 사이즈의 크기를 모두 같이 설정한다. 이때 섬네일 사이즈는 무시한다.
if($r_img_width >= $r_width){
$r_img_width = $r_width;
}else{
$r_img_width = $r_img_width;
}
if($r_img_height >= $r_height){
$r_img_height = $r_height;
}else{
$r_img_height = $r_img_height;
}
$r_new_width = $r_width;
$r_new_height = $r_height;
// 섬내일과 축소된이미지의 가로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_width == $r_new_width){
$r_over_width = 0;
}else{
$r_over_width = ($r_img_width - $r_new_width)*($r_xcut/10);
}
// 섬내일과 축소된이미지의 세로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_height == $r_new_height){
$r_over_height = 0;
}else{
$r_over_height = ($r_img_height - $r_new_height)*($r_ycut/10);
}
}
echo $r_img_width." / ".$r_img_height;
// 기본바탕색의 지정된 섬내일 사이즈의 이미지틀을 만든다.(PHP 4 >= 4.0.6, PHP 5)
$r_image_p = imagecreatetruecolor($r_img_width, $r_img_height); //이 함수는 GD 2.0.1 이상이 필요합니다. (2.0.28 이상을 권장합니다)
$bgcolor = imagecolorallocatealpha($r_image_p, 255, 255, 255, 127);
imagefill($r_image_p, 0, 0, $bgcolor);
// 확장자를 구별하여 이미지 포멧을 변환한다. (PHP 4, PHP 5)
if($r_img_type == 1){
$r_image = imagecreatefromgif($rr_filename);
}else if($r_img_type == 2){
$r_image = imagecreatefromjpeg($rr_filename);
}else if($r_img_type == 3){
$r_image = imagecreatefrompng($rr_filename);
}
// 원본이미지의 사이즈를 위에서 계산된 비률에 맞게 사이즈를 축소하고 섬내일 크기로 잘라낸다. (PHP 4 >= 4.0.6, PHP 5)
$r_image_s = imagecopyresampled($r_image_p, $r_image, $r_over_width, $r_over_height, 0, 0, $r_new_width, $r_new_height, $r_width, $r_height);
// 포멧에 맞추어 이미지를 저장한다. (PHP 4, PHP 5)
if($r_img_type == 1){
imagegif($r_image_p, $r_fname);
}else if($r_img_type == 2){
imagejpeg($r_image_p, $r_fname, 100);
}else if($r_img_type == 3){
imagepng($r_image_p, $r_fname);
}
// 메모리에 있는 그림 삭제 (PHP 4, PHP 5)
imagedestroy($r_image);
imagedestroy($r_image_p);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($r_fname, 0606);
return $r_fname;
}
?>
--thumbnail.make.php
<?
$g4_path = "../../.."; // common.php 의 상대 경로
include_once("$g4_path/common.php");
include_once("./thumbnail.lib.php");
if ($is_admin == "super") {
$dir = "../../../data/file/$bo_table";
$tb_dir = $dir."/thumbnail";
// 디렉토리 생성 (퍼미션 변경)
@mkdir($tb_dir, 0707);
@chmod($tb_dir, 0707);
$file_dir_open = opendir($dir);
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$type = file_type($dir_read);
if($type == "jpg" || $type == "gif" || $type == "png"){
// 이미지 비률 수정및 이미지 포멧방식 체크
list($width, $height, $img_type) = getimagesize("$dir/$dir_read");
if($img_type >= 1 || $img_type <= 3){
if($tb_width < $width || $tb_height < $height){
if(!is_file("$tb_dir/$dir_read")){
$src = make_tb($dir_read, $bo_table, $tb_width, $tb_height);
echo "<img src=\"$src\">";
}
}
}
}
}
}
closedir($file_dir_open);
$url = "http://".str_replace("||", "&", $url);
goto_url($url);
}
?>
-- thumbnail_upload.php
<?
include("thumbnail.lib.php");
//미리보기할 이미지 넘버
$num = $tbnum;
//임지서장경로
$rx_dir = "../../../data/rinix";
//echo $num." 번이미지<br>";
// 디렉토리 생성 (퍼미션 변경)
@mkdir($rx_dir, 0707);
@chmod($rx_dir, 0707);
// 이미지 컷팅위치 0~10 까지
$r_xcut = 5;
$r_ycut = 2;
if($_FILES['bf_file']){
//파일 속성 저장
$uf_name = $_FILES['bf_file']['name'][$num];
$uf_type = $_FILES['bf_file']['type'][$num];
$uf_size = $_FILES['bf_file']['size'][$num];
$uf_tmp_name = $_FILES['bf_file']['tmp_name'][$num];
$uf_error = $_FILES['bf_file']['error'][$num];
//파일 업로드 검사 (PHP 4.2.0부터, PHP는 파일 배열에 적절한 에러 코드를 반환합니다.)
switch($uf_error){
case (1) :
alerts("업로드한 파일이 php.ini ".ini_get('upload_max_filesize')." 지시어보다 큽니다.");
case (2) :
alerts("업로드한 파일이 HTML 폼에서 지정한 MAX_FILE_SIZE 지시어보다 큽니다.");
case (3) :
alerts("파일이 일부분만 전송되었습니다.");
case (4) :
alerts("파일이 전송되지 않았습니다.");
}
// 디렉토리네 파일 삭제
//dell_file($rx_dir);
//파일 이름구하기
$uf_rename = explode(".", $uf_name);
$uf_nacnt = count($uf_rename)-1;
for($i=0; $i<$uf_nacnt; $i++){
if($i>0) $re_name = $re_name.".";
$re_name = $re_name.$uf_rename[$i];
}
//타입
$uf_type = $uf_rename[$uf_nacnt];
//파일이름 변경
$uf_name = str_replace('%', '', urlencode($re_name));
$dest_file = $rx_dir."/".$uf_name.".".$uf_type;
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($uf_tmp_name, $dest_file) or die($_FILES[bf_file][error]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);
$uf_url = "../data/rinix/".$uf_name.".".$uf_type;
//echo "<br>이름 : $re_name <br> 타입 : $uf_type";
$r_filename = $dest_file;
$f_frname = $uf_name."1.".$uf_type;
$r_fname = $rx_dir."/".$f_frname;
$tb_url = "../data/rinix/".$f_frname;
// 썸내일 크기
$r_img_width = $tbx; // 가로
$r_img_height = $tby; // 세로
// 이미지 비률 수정및 이미지 포멧방식 체크
list($r_width, $r_height, $r_img_type) = getimagesize($dest_file);
// 확장자가 GIF,JPG,PNG 가 안일시에 에러메시지 출력
if($r_img_type<1 or $r_img_type > 3){
alerts("섬네일 생성은 GIF, JPG, PNG 만 가능합니다.");
exit;
}
// 이미지 크기 검사
if($r_img_width < $r_width && $r_img_height < $r_height){ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 클때
// 가로 크기를 기준으로 섬네일 가로크기비률에 맞춰 사이즈를 조정한다.
$r_percent = $r_width / $r_img_width;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
// 위에서 사이즈 조정을 했을시 여백이 생긴다면 다시 세로를 기준으로 사이즈를 조정한다.
if($r_img_height > $r_new_height){
$r_percent = $r_height / $r_img_height;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
}
}else{ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 작을때
// 생성될 이미지 사이즈와 원본이미지 사이즈의 크기를 모두 같이 설정한다. 이때 섬네일 사이즈는 무시한다.
if($r_img_width >= $r_width){
$r_img_width = $r_width;
}else{
$r_img_width = $r_img_width;
}
if($r_img_height >= $r_height){
$r_img_height = $r_height;
}else{
$r_img_height = $r_img_height;
}
$r_new_width = $r_width;
$r_new_height = $r_height;
}
// 섬내일과 축소된이미지의 가로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_width == $r_new_width){
$r_over_width = 0;
}else{
$r_over_width = abs($r_img_width - $r_new_width)*($r_xcut/10);
}
// 섬내일과 축소된이미지의 세로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_height == $r_new_height){
$r_over_height = 0;
}else{
$r_over_height = abs($r_img_height - $r_new_height)*($r_ycut/10);
}
// 기본바탕색의 지정된 섬내일 사이즈의 이미지틀을 만든다.(PHP 4 >= 4.0.6, PHP 5)
$r_image_p = imagecreatetruecolor($r_new_width, $r_new_height); //이 함수는 GD 2.0.1 이상이 필요합니다. (2.0.28 이상을 권장합니다)
// 바탕을 투명으로 들기위해 투명색지정
$bgcolor = imagecolorallocatealpha($r_image_p, 255, 255, 255, 127);
// 바탕을 투명색으로 변경
imagefill($r_image_p, 0, 0, $bgcolor);
// 확장자를 구별하여 이미지 포멧을 변환한다. (PHP 4, PHP 5)
if($r_img_type == 1){
$r_image = imagecreatefromgif($r_filename);
}else if($r_img_type == 2){
$r_image = imagecreatefromjpeg($r_filename);
}else if($r_img_type == 3){
$r_image = imagecreatefrompng($r_filename);
}
// 원본이미지의 사이즈를 위에서 계산된 비률에 맞게 사이즈를 축소하고 섬내일 크기로 잘라낸다. (PHP 4 >= 4.0.6, PHP 5)
$r_image_s = imagecopyresampled($r_image_p, $r_image, 0, 0, 0, 0, $r_new_width, $r_new_height, $r_width, $r_height);
// 포멧에 맞추어 이미지를 저장한다. (PHP 4, PHP 5)
if($r_img_type == 1){
imagegif($r_image_p, $r_fname);
}else if($r_img_type == 2){
imagejpeg($r_image_p, $r_fname, 100);
}else if($r_img_type == 3){
imagepng($r_image_p, $r_fname);
}
// 메모리에 있는 그림 삭제 (PHP 4, PHP 5)
imagedestroy($r_image);
imagedestroy($r_image_p);
?>
<script language="javascript">
parent.document.getElementById("thumbnail").style.width = "<?=$r_new_width?>";
parent.document.getElementById("thumbnail").style.height = "<?=$r_new_height?>";
parent.document.getElementById("thumbnail").style.background = "url('<?=$tb_url?>')";
parent.document.getElementById("mask").style.left = <?=$r_over_width?>;
parent.document.getElementById("mask").style.top = <?=$r_over_height?>;
parent.document.getElementById("mask").style.width = "<?=$r_img_width?>";
parent.document.getElementById("mask").style.height = "<?=$r_img_height?>";
parent.document.getElementById("tb_bu").style.width = "<?=$r_img_width?>";
parent.document.getElementById("tb_bu").style.height = "<?=$r_img_height?>";
parent.document.getElementById("tb_name[<?=$num?>]").value = "<?=$f_frname?>";
parent.document.getElementById("loc_x[<?=$num?>]").value = <?=$r_over_width?>;
parent.document.getElementById("loc_y[<?=$num?>]").value = <?=$r_over_height?>;
parent.document.getElementById("ma_width[<?=$num?>]").value = "<?=$r_img_width?>";
parent.document.getElementById("ma_height[<?=$num?>]").value = "<?=$r_img_height?>";
parent.document.getElementById("tb_width[<?=$num?>]").value = "<?=$r_new_width?>";
parent.document.getElementById("tb_height[<?=$num?>]").value = "<?=$r_new_height?>";
parent.document.getElementById("tbnum").value = <?=$num?>;
</script>
<?
// 파일 삭제
dell_one($rx_dir, $uf_name.".".$uf_type);
//dell_one($rx_dir, $f_frname);
}else{
alerts("파일을 먼저 선택해주세요.");
}
?>
게시판에 스킨파일을 넣었는데
다른 설정을 해줘야 하나요~?
처음 파일 등록할때도 썸네일에 대해서 파일이미지가 보이지 않더라구요 무엇이 문제인지를
알수가 없네요..
---thumbnail.lib.php---
<?php
// 디렉토리네 파일 삭제
function dell_file($rx_dir){
$dir_open = opendir($rx_dir);
while (false !== ($dir_read = readdir($dir_open))) {
if (is_file($rx_dir.'/'.$dir_read)) @unlink($rx_dir.'/'.$dir_read);
}
closedir($dir_open);
}
// 디렉토리네 파일선택 삭제
function dell_one($rx_dir, $filename){
$dir_open = opendir($rx_dir);
@unlink($rx_dir.'/'.$filename);
closedir($dir_open);
}
// 경고창
function alerts($text){
echo "<script lange='java script'>alert(\"$text\");</script>";
}
// 임시파일 확인
function rinix_file($dir){
global $board_skin_path;
$file_dir_open = opendir("$dir");
$f = 0;
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$f++;
}
}
closedir($file_dir_open);
$url = $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'];
$url = str_replace("&", "||", $url);
if($f > 0) $text = "<a href='$board_skin_path/suspension.filedell.php?url=$url'>임시파일 <font color='red'>{$f}개</font>가 있습니다. 삭제 하시겠습니까?</a>";
return $text;
}
// 부족한 섬네일 확인
function rinix_tb($dir, $tb_width, $tb_height){
global $board_skin_path, $bo_table;
$tb_dir = $dir."/thumbnail";
$file_dir_open = opendir($dir);
$i = 0;
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$type = file_type($dir_read);
if($type == "jpg" || $type == "gif" || $type == "png"){
// 이미지 비률 수정및 이미지 포멧방식 체크
list($width, $height, $img_type) = getimagesize("$dir/$dir_read");
if($img_type >= 1 || $img_type <= 3){
if($tb_width < $width || $tb_height < $height){
if(!is_file("$tb_dir/$dir_read")){
$i++;
}
}
}
}
}
}
closedir($file_dir_open);
$url = $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'];
$url = str_replace("&", "||", $url);
if($i > 0){ $text = "<a href='$board_skin_path/thumbnail.make.php?tb_width=$tb_width&tb_height=$tb_height&bo_table=$bo_table&url=$url'>섬네일 <font color='red'>{$i}개</font>가 필요합니다. 생성 하시겠습니까?</a>"; }
return $text;
}
function file_type($file){
$file = explode(".", $file);
$no = count($file)-1;
$type = $file[$no];
return $type;
}
function make_tb($fname, $bo_table, $tb_x, $tb_y){
echo $fname." / ".$bo_table." / ".$tb_x." / ".$tb_y."<br>";
// 이미지 컷팅위치 0~10 까지
$r_xcut = 5;
$r_ycut = 2;
$r_filename = $fname; // 파일이름
$rr_filename = "../../../data/file/$bo_table/".$r_filename;
$r_save_root = "../../../data/file/$bo_table/thumbnail"; // 저장장소
// 이미지 비률 수정및 이미지 포멧방식 체크
list($r_width, $r_height, $r_img_type) = getimagesize($rr_filename);
$r_fname = $r_save_root."/".$r_filename;
// 설정된 썸네일 크기
$r_img_width = $tb_x;
$r_img_height = $tb_y;
// 이미지 크기 검사
if($r_img_width < $r_width && $r_img_height < $r_height){ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 클때
// 가로 크기를 기준으로 섬네일 가로크기비률에 맞춰 사이즈를 조정한다.
$r_percent = $r_width / $r_img_width;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
// 위에서 사이즈 조정을 했을시 여백이 생긴다면 다시 세로를 기준으로 사이즈를 조정한다.
if($r_img_height > $r_new_height){
$r_percent = $r_height / $r_img_height;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
}
}else{ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 작을때
// 생성될 이미지 사이즈와 원본이미지 사이즈의 크기를 모두 같이 설정한다. 이때 섬네일 사이즈는 무시한다.
if($r_img_width >= $r_width){
$r_img_width = $r_width;
}else{
$r_img_width = $r_img_width;
}
if($r_img_height >= $r_height){
$r_img_height = $r_height;
}else{
$r_img_height = $r_img_height;
}
$r_new_width = $r_width;
$r_new_height = $r_height;
// 섬내일과 축소된이미지의 가로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_width == $r_new_width){
$r_over_width = 0;
}else{
$r_over_width = ($r_img_width - $r_new_width)*($r_xcut/10);
}
// 섬내일과 축소된이미지의 세로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_height == $r_new_height){
$r_over_height = 0;
}else{
$r_over_height = ($r_img_height - $r_new_height)*($r_ycut/10);
}
}
echo $r_img_width." / ".$r_img_height;
// 기본바탕색의 지정된 섬내일 사이즈의 이미지틀을 만든다.(PHP 4 >= 4.0.6, PHP 5)
$r_image_p = imagecreatetruecolor($r_img_width, $r_img_height); //이 함수는 GD 2.0.1 이상이 필요합니다. (2.0.28 이상을 권장합니다)
$bgcolor = imagecolorallocatealpha($r_image_p, 255, 255, 255, 127);
imagefill($r_image_p, 0, 0, $bgcolor);
// 확장자를 구별하여 이미지 포멧을 변환한다. (PHP 4, PHP 5)
if($r_img_type == 1){
$r_image = imagecreatefromgif($rr_filename);
}else if($r_img_type == 2){
$r_image = imagecreatefromjpeg($rr_filename);
}else if($r_img_type == 3){
$r_image = imagecreatefrompng($rr_filename);
}
// 원본이미지의 사이즈를 위에서 계산된 비률에 맞게 사이즈를 축소하고 섬내일 크기로 잘라낸다. (PHP 4 >= 4.0.6, PHP 5)
$r_image_s = imagecopyresampled($r_image_p, $r_image, $r_over_width, $r_over_height, 0, 0, $r_new_width, $r_new_height, $r_width, $r_height);
// 포멧에 맞추어 이미지를 저장한다. (PHP 4, PHP 5)
if($r_img_type == 1){
imagegif($r_image_p, $r_fname);
}else if($r_img_type == 2){
imagejpeg($r_image_p, $r_fname, 100);
}else if($r_img_type == 3){
imagepng($r_image_p, $r_fname);
}
// 메모리에 있는 그림 삭제 (PHP 4, PHP 5)
imagedestroy($r_image);
imagedestroy($r_image_p);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($r_fname, 0606);
return $r_fname;
}
?>
--thumbnail.make.php
<?
$g4_path = "../../.."; // common.php 의 상대 경로
include_once("$g4_path/common.php");
include_once("./thumbnail.lib.php");
if ($is_admin == "super") {
$dir = "../../../data/file/$bo_table";
$tb_dir = $dir."/thumbnail";
// 디렉토리 생성 (퍼미션 변경)
@mkdir($tb_dir, 0707);
@chmod($tb_dir, 0707);
$file_dir_open = opendir($dir);
while (false !== ($dir_read = readdir($file_dir_open))) {
if(is_file("$dir/$dir_read")){
$type = file_type($dir_read);
if($type == "jpg" || $type == "gif" || $type == "png"){
// 이미지 비률 수정및 이미지 포멧방식 체크
list($width, $height, $img_type) = getimagesize("$dir/$dir_read");
if($img_type >= 1 || $img_type <= 3){
if($tb_width < $width || $tb_height < $height){
if(!is_file("$tb_dir/$dir_read")){
$src = make_tb($dir_read, $bo_table, $tb_width, $tb_height);
echo "<img src=\"$src\">";
}
}
}
}
}
}
closedir($file_dir_open);
$url = "http://".str_replace("||", "&", $url);
goto_url($url);
}
?>
-- thumbnail_upload.php
<?
include("thumbnail.lib.php");
//미리보기할 이미지 넘버
$num = $tbnum;
//임지서장경로
$rx_dir = "../../../data/rinix";
//echo $num." 번이미지<br>";
// 디렉토리 생성 (퍼미션 변경)
@mkdir($rx_dir, 0707);
@chmod($rx_dir, 0707);
// 이미지 컷팅위치 0~10 까지
$r_xcut = 5;
$r_ycut = 2;
if($_FILES['bf_file']){
//파일 속성 저장
$uf_name = $_FILES['bf_file']['name'][$num];
$uf_type = $_FILES['bf_file']['type'][$num];
$uf_size = $_FILES['bf_file']['size'][$num];
$uf_tmp_name = $_FILES['bf_file']['tmp_name'][$num];
$uf_error = $_FILES['bf_file']['error'][$num];
//파일 업로드 검사 (PHP 4.2.0부터, PHP는 파일 배열에 적절한 에러 코드를 반환합니다.)
switch($uf_error){
case (1) :
alerts("업로드한 파일이 php.ini ".ini_get('upload_max_filesize')." 지시어보다 큽니다.");
case (2) :
alerts("업로드한 파일이 HTML 폼에서 지정한 MAX_FILE_SIZE 지시어보다 큽니다.");
case (3) :
alerts("파일이 일부분만 전송되었습니다.");
case (4) :
alerts("파일이 전송되지 않았습니다.");
}
// 디렉토리네 파일 삭제
//dell_file($rx_dir);
//파일 이름구하기
$uf_rename = explode(".", $uf_name);
$uf_nacnt = count($uf_rename)-1;
for($i=0; $i<$uf_nacnt; $i++){
if($i>0) $re_name = $re_name.".";
$re_name = $re_name.$uf_rename[$i];
}
//타입
$uf_type = $uf_rename[$uf_nacnt];
//파일이름 변경
$uf_name = str_replace('%', '', urlencode($re_name));
$dest_file = $rx_dir."/".$uf_name.".".$uf_type;
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($uf_tmp_name, $dest_file) or die($_FILES[bf_file][error]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);
$uf_url = "../data/rinix/".$uf_name.".".$uf_type;
//echo "<br>이름 : $re_name <br> 타입 : $uf_type";
$r_filename = $dest_file;
$f_frname = $uf_name."1.".$uf_type;
$r_fname = $rx_dir."/".$f_frname;
$tb_url = "../data/rinix/".$f_frname;
// 썸내일 크기
$r_img_width = $tbx; // 가로
$r_img_height = $tby; // 세로
// 이미지 비률 수정및 이미지 포멧방식 체크
list($r_width, $r_height, $r_img_type) = getimagesize($dest_file);
// 확장자가 GIF,JPG,PNG 가 안일시에 에러메시지 출력
if($r_img_type<1 or $r_img_type > 3){
alerts("섬네일 생성은 GIF, JPG, PNG 만 가능합니다.");
exit;
}
// 이미지 크기 검사
if($r_img_width < $r_width && $r_img_height < $r_height){ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 클때
// 가로 크기를 기준으로 섬네일 가로크기비률에 맞춰 사이즈를 조정한다.
$r_percent = $r_width / $r_img_width;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
// 위에서 사이즈 조정을 했을시 여백이 생긴다면 다시 세로를 기준으로 사이즈를 조정한다.
if($r_img_height > $r_new_height){
$r_percent = $r_height / $r_img_height;
$r_new_width = $r_width / $r_percent;
$r_new_height = $r_height / $r_percent;
}
}else{ // 섬내일 가로, 세로 크기보다 이미지 가로, 세로 크기가 모두 작을때
// 생성될 이미지 사이즈와 원본이미지 사이즈의 크기를 모두 같이 설정한다. 이때 섬네일 사이즈는 무시한다.
if($r_img_width >= $r_width){
$r_img_width = $r_width;
}else{
$r_img_width = $r_img_width;
}
if($r_img_height >= $r_height){
$r_img_height = $r_height;
}else{
$r_img_height = $r_img_height;
}
$r_new_width = $r_width;
$r_new_height = $r_height;
}
// 섬내일과 축소된이미지의 가로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_width == $r_new_width){
$r_over_width = 0;
}else{
$r_over_width = abs($r_img_width - $r_new_width)*($r_xcut/10);
}
// 섬내일과 축소된이미지의 세로 크기를 비교하여 잘라낼 위치를 찾는다.
if($r_img_height == $r_new_height){
$r_over_height = 0;
}else{
$r_over_height = abs($r_img_height - $r_new_height)*($r_ycut/10);
}
// 기본바탕색의 지정된 섬내일 사이즈의 이미지틀을 만든다.(PHP 4 >= 4.0.6, PHP 5)
$r_image_p = imagecreatetruecolor($r_new_width, $r_new_height); //이 함수는 GD 2.0.1 이상이 필요합니다. (2.0.28 이상을 권장합니다)
// 바탕을 투명으로 들기위해 투명색지정
$bgcolor = imagecolorallocatealpha($r_image_p, 255, 255, 255, 127);
// 바탕을 투명색으로 변경
imagefill($r_image_p, 0, 0, $bgcolor);
// 확장자를 구별하여 이미지 포멧을 변환한다. (PHP 4, PHP 5)
if($r_img_type == 1){
$r_image = imagecreatefromgif($r_filename);
}else if($r_img_type == 2){
$r_image = imagecreatefromjpeg($r_filename);
}else if($r_img_type == 3){
$r_image = imagecreatefrompng($r_filename);
}
// 원본이미지의 사이즈를 위에서 계산된 비률에 맞게 사이즈를 축소하고 섬내일 크기로 잘라낸다. (PHP 4 >= 4.0.6, PHP 5)
$r_image_s = imagecopyresampled($r_image_p, $r_image, 0, 0, 0, 0, $r_new_width, $r_new_height, $r_width, $r_height);
// 포멧에 맞추어 이미지를 저장한다. (PHP 4, PHP 5)
if($r_img_type == 1){
imagegif($r_image_p, $r_fname);
}else if($r_img_type == 2){
imagejpeg($r_image_p, $r_fname, 100);
}else if($r_img_type == 3){
imagepng($r_image_p, $r_fname);
}
// 메모리에 있는 그림 삭제 (PHP 4, PHP 5)
imagedestroy($r_image);
imagedestroy($r_image_p);
?>
<script language="javascript">
parent.document.getElementById("thumbnail").style.width = "<?=$r_new_width?>";
parent.document.getElementById("thumbnail").style.height = "<?=$r_new_height?>";
parent.document.getElementById("thumbnail").style.background = "url('<?=$tb_url?>')";
parent.document.getElementById("mask").style.left = <?=$r_over_width?>;
parent.document.getElementById("mask").style.top = <?=$r_over_height?>;
parent.document.getElementById("mask").style.width = "<?=$r_img_width?>";
parent.document.getElementById("mask").style.height = "<?=$r_img_height?>";
parent.document.getElementById("tb_bu").style.width = "<?=$r_img_width?>";
parent.document.getElementById("tb_bu").style.height = "<?=$r_img_height?>";
parent.document.getElementById("tb_name[<?=$num?>]").value = "<?=$f_frname?>";
parent.document.getElementById("loc_x[<?=$num?>]").value = <?=$r_over_width?>;
parent.document.getElementById("loc_y[<?=$num?>]").value = <?=$r_over_height?>;
parent.document.getElementById("ma_width[<?=$num?>]").value = "<?=$r_img_width?>";
parent.document.getElementById("ma_height[<?=$num?>]").value = "<?=$r_img_height?>";
parent.document.getElementById("tb_width[<?=$num?>]").value = "<?=$r_new_width?>";
parent.document.getElementById("tb_height[<?=$num?>]").value = "<?=$r_new_height?>";
parent.document.getElementById("tbnum").value = <?=$num?>;
</script>
<?
// 파일 삭제
dell_one($rx_dir, $uf_name.".".$uf_type);
//dell_one($rx_dir, $f_frname);
}else{
alerts("파일을 먼저 선택해주세요.");
}
?>
댓글 전체