회원사진(아이콘) 업로드시 큰이미지 리사이즈하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

회원사진(아이콘) 업로드시 큰이미지 리사이즈하기 정보

회원사진(아이콘) 업로드시 큰이미지 리사이즈하기

본문

유아원님의 회원사진 추가하기 잘 사용하고있습니다^^


지정 이미지사이즈 보다 이상일경우는 경고창하나 없이 사진이 지워져버리고 말아
회원님들이 어리둥절해 하죠... 문구를 적어봤자 인거 같음(ㅡㅡa)

이부분은 그누보드 기본 아이콘도 마찬가지입니다...


큰이미지를 올릴경우 원하는 사이즈로 리사이즈 시키는 방법인데요.
썸네일을 사용합니다.. 버전 2이상용 이며, 이하버전이 필요하신분은 쪽지주세요

수정파일 (회원사진용 jpg,jpeg)
bbs/register_form_update.php = adm/member_form_update.php
두놈다 똑같이 수정해주시면됩니다.


수정전
            if (file_exists($dest_path))
            {
                $size = getimagesize($dest_path);
                // 이미지의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 이미지 삭제
                if ($size[0] > $config[cf_member_photo_width] || $size[1] > $config[cf_member_photo_height])
                    @unlink($dest_path);
            }

수정후
            if (file_exists($dest_path))
            {
                $size = getimagesize($dest_path);
                // 이미지의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 이미지 리사이즈
                if ($size[0] > $config[cf_member_photo_width] || $size[1] > $config[cf_member_photo_height]) {
$width = $config[cf_member_photo_width];
$height = $config[cf_member_photo_height];
$cfile = imagecreatefromjpeg($dest_path);
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagejpeg($dest, $dest_path, 90); }
            }




그런데 잘되나 안되나 테스트 하던중에 그누보드 버그를 발견했습니다...

첨부하여 업로드시 파일명이 없으면(경로틀리거나) 넘어가면서 에러가 발생합니다..

파일명이 없을경우는 처리가 안되있는거 같은데...
추천
4

댓글 9개

가로, 세로의 정해진 크기와 실제 크기를 비교해서 가로, 세로 어느쪽이든 넘치지 않게 알아서 맞추기 위한 소스를 전 이렇게 씁니다.
150X200으로 설정해 놓을 경우 실제 크기와 상관없이 150이든 200이든 맞춰서 같은 비율로 적합하게 리사이즈합니다.

if (file_exists($dest_path))
{
    $size = getimagesize($dest_path);
    // 이미지의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 이미지 리사이즈
    if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height]) {

              //가로,세로에 맞춰 사이즈 제한
if ($size[0] < $config[cf_member_icon_width]){         
  if ($size[1] > $config[cf_member_icon_height]){     
      $height = $config[cf_member_icon_height] ;         
      $width = ceil( $size[0] * ( $config[cf_member_icon_height] / $size[1] ) );   
    } else {                   
      $height = $size[1];     
      $width = $size[0];     
    }
}else{                                                     
  if (( $size[1] / $size[0] ) > ($config[cf_member_icon_height] / $config[cf_member_icon_width])){
      $height = $config[cf_member_icon_height] ;                                       
      $width = ceil( $size[0] * ( $config[cf_member_icon_height] / $size[1] ) );   
      }else{                                                       
      $width = $config[cf_member_icon_width] ;                                             
      $height = ceil( $size[1] * ( $config[cf_member_icon_width] / $size[0] ) );   
  }
}
     
$cfile = imagecreatefromjpeg($dest_path);
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagejpeg($dest, $dest_path, 90); }
}
jestar 님께서 주신 소스는 회원사진용 리사이즈를 아이콘사이즈에서 비교해서 엉뚱한 결과를 초래합니다.
소스 jestar님의 소스에서 icon을 photo로 치환하여 적용하세요.
치환된 소스..

if (file_exists($dest_path))
{
    $size = getimagesize($dest_path);
    // 이미지의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 이미지 리사이즈
    if ($size[0] > $config[cf_member_photo_width] || $size[1] > $config[cf_member_photo_height]) {

              //가로,세로에 맞춰 사이즈 제한
if ($size[0] < $config[cf_member_photo_width]){         
  if ($size[1] > $config[cf_member_photo_height]){     
      $height = $config[cf_member_photo_height] ;         
      $width = ceil( $size[0] * ( $config[cf_member_photo_height] / $size[1] ) );   
    } else {                   
      $height = $size[1];     
      $width = $size[0];     
    }
}else{                                                     
  if (( $size[1] / $size[0] ) > ($config[cf_member_photo_height] / $config[cf_member_photo_width])){
      $height = $config[cf_member_photo_height] ;                                       
      $width = ceil( $size[0] * ( $config[cf_member_photo_height] / $size[1] ) );   
      }else{                                                       
      $width = $config[cf_member_photo_width] ;                                             
      $height = ceil( $size[1] * ( $config[cf_member_photo_width] / $size[0] ) );   
  }
}
     
$cfile = imagecreatefromjpeg($dest_path);
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagejpeg($dest, $dest_path, 90); }
}
gif 파일은 위 코드가 않될까요?
안될리가 없겠지요,,,
그런데 더 궁굼한것은 만약 gif 파일을 리사이징(썸네일화) 성공했다면
에니메이션 속성이 사라지나요?
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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