자신의 이미지 별도로 저장해서 보여주기...에서 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

자신의 이미지 별도로 저장해서 보여주기...에서 질문입니다. 정보

자신의 이미지 별도로 저장해서 보여주기...에서 질문입니다.

본문

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=11475

위의 소스를 적용했는데요.
회원중에 이미지를 크게 올리는 회원도 있고 해서... 물론 저 소스에는 가로 혹은 세로가 150 이상이면 그냥 삭제를 해버리는 소스가 있지만,
제 생각에는 회원이 약간 큰 사이즈를 올린다면, 예를 들어 기준을 80x90 으로 해놓았을 때
기준을 하나라도 초과하면 강제로 비율에 맞게 80x90중 하나에 맞게 줄여서 저장을 해버리는 것을 시도를 하고 있습니다.

그래서 아래의 phpschool 에서 소스를 참조를 했구요.

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=24485&sca=&sfl=wr_subject&stx=%BD%E6%B3%D7%C0%CF&sop=and

그리고 합친 소스를 skin/member/basic/register_update.skin.php 에 아래와 같이 넣었습니다.
근데 실행이 안되네요. 에러도 없고... 결과도 없고.. 아무튼 뭔가가 이상한듯 합니다.
좀 봐주세요 ~

첨부 파일로도 올리겠습니다.




<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.
?>


<?
// php school 소스 참조
// http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=24485&sca=&sfl=wr_subject&stx=%BD%E6%B3%D7%C0%CF&sop=and
function thumnail($file, $save_filename, $save_path, $max_width, $max_height)
{
      $img_info = getImageSize($file);
      if($img_info[2] == 1)
      {
              $src_img = ImageCreateFromGif($file);
              }elseif($img_info[2] == 2){
              $src_img = ImageCreateFromJPEG($file);
              }elseif($img_info[2] == 3){
              $src_img = ImageCreateFromPNG($file);
              }else{
              return 0;
      }

      $dst_width = $img_info[0];
        $dst_height = $img_info[1];

        while ($dst_width > $max_width || $dst_height > $max_height)
        {
            if ($dst_width > $max_width)
            {
                $temp = $dst_width;
                $dst_width = $max_width;
                $dst_height = ceil(($max_width / $temp) * $dst_height);
            }

            if ($dst_height > $max_height)
            {
                $temp = $dst_height;
                $dst_height = $max_height;
                $dst_width = ceil(($max_height / $temp) * $dst_width);
            }
        }

      if($dst_width < $max_width) $srcx = ceil(($max_width - $dst_width)/2); else $srcx = 0;
      if($dst_height < $max_height) $srcy = ceil(($max_height - $dst_height)/2); else $srcy = 0;

      if($img_info[2] == 1)
      {
              $dst_img = imagecreate($max_width, $max_height);
      }else{
              $dst_img = imagecreatetruecolor($max_width, $max_height);
      }

      $bgc = ImageColorAllocate($dst_img, 255, 255, 255);
      ImageFilledRectangle($dst_img, 0, 0, $max_width, $max_height, $bgc);
      ImageCopyResampled($dst_img, $src_img, $srcx, $srcy, 0, 0, $dst_width, $dst_height, ImageSX($src_img),ImageSY($src_img));

      if($img_info[2] == 1)
      {
              ImageInterlace($dst_img);
              ImageGif($dst_img, $save_path.$save_filename);
      }elseif($img_info[2] == 2){
              ImageInterlace($dst_img);
              ImageJPEG($dst_img, $save_path.$save_filename);
      }elseif($img_info[2] == 3){
              ImagePNG($dst_img, $save_path.$save_filename);
      }
      ImageDestroy($dst_img);
      ImageDestroy($src_img);
}




// sir 참조
// http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=11475&sca=&sfl=wr_subject&stx=%C8%B8%BF%F8%BB%E7%C1%F8+%BA%B0%B5%B5&sop=and

    // 사진 삭제
    if ($del_mb_icon2=="1")
        @unlink("$g4[path]/memberimg/$mb_id.jpg");
   
  //사진 업로드
    if (is_uploaded_file($_FILES[mb_icon2][tmp_name])) {
        if (!preg_match("/(\.jpg)$/i", $_FILES[mb_icon2][name])) {
            alert($_FILES[mb_icon2][name] . '은(는) jpg 파일이 아닙니다.');
        }
        if (preg_match("/(\.jpg)$/i", $_FILES[mb_icon2][name])) {

$file = $_FILES[mb_icon2][name];
$save_path = $g4[path]."/memberimg/";
$save_filename = $mb_id.".jpg";
$max_with = 80;
$max_height = 85;

thumnail($file, $save_filename, $save_path, $max_width, $max_height)

        }
    }



/*================원본 , 위의 10 라인 이후 모두를 아래 것으로 대체하면 이전 것으로 복원 됨  ===========================

    // 사진 삭제
    if ($del_mb_icon2=="1")
        @unlink("$g4[path]/memberimg/$mb_id.jpg");
   
  //사진 업로드
    if (is_uploaded_file($_FILES[mb_icon2][tmp_name])) {
        if (!preg_match("/(\.jpg)$/i", $_FILES[mb_icon2][name])) {
            alert($_FILES[mb_icon2][name] . '은(는) jpg 파일이 아닙니다.');
        }
        if (preg_match("/(\.jpg)$/i", $_FILES[mb_icon2][name])) {
            $dest_path2 = "$g4[path]/memberimg/$mb_id.jpg";
            move_uploaded_file($_FILES[mb_icon2][tmp_name], $dest_path2);
            chmod($dest_path2, 0606);
            if (file_exists($dest_path2)) {
                $size = getimagesize($dest_path2);
                // 아이콘의 폭 또는 높이가 150 보다 크다면 이미 업로드 된 아이콘 삭제
                if ($size[0] > 150 || $size[1] > 150) {
                    @unlink($dest_path2);
                }
            }
        }
    }
=====================================================================================*/

?>

댓글 전체

소스가 눈아파요.
저도 파일처리 취약하긴 한데. 제 기억으로는 POST된 파일은 tmp디렉토리에
파일명이 요상하게 들어가 있는걸로 알거든요.

$file = $_FILES[mb_icon2][name];  이건 오리지날 네임
$file = $_FILES[mb_icon2][tmp_name]; 이게 임시저장소에 들어있는 실제 네임으로
알고 있어요 한번 바꿔보세요.
우선 감사합니다.
바꿔도... 겉으로는 일단 똑같네요. 그냥 아무 진행없이 흰 바탕화면만 있네요...ㅜㅜ
눈이 아플거 같아서 파일 첨부도 했는디..마니 아프시군요 ...흠
위의 첨부된 소스를 보시면, 제일 밑에 주석 쳐 놓은 부분이 원래 소스인데 그걸 사용하면 이미지 업로드 잘 되고 또 자신의 정보 수정 페이지로 잘 이동합니다.
근데 그 잘되는 페이지에도 goto_url 이 의미하는 페이지 이동에 관련된 소스는 본적이 없습니다만....?......
아 skin파일이군요 죄송합니당. 저도 삽질 많이 해요 저런거 잘 못봐서...
goto_url은 메인 소스에 있어요.스킨파일엔 없구요

thumnail($file, $save_filename, $save_path, $max_width, $max_height)
여기 뒤에 세미콜론 빠져서 그런거 아닌가요 혹시?
그렇다면 php셋팅에 에러메세지를 전부 표시 안하도록 되어있나본데

힘들어요 셋팅 바꾸세요 ㅠ
세미콜론 넣어봤는데 똑같습니다.
회원정보 수정하고 확인 누르면 그냥 흰 페이지만 덜렁 하나 뜹니다.
흰페이지의 소스보기를 하면 아무것도 없어요 ^^

감사합니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT