프로필 사진 사이즈 관련하여 문의좀 드릴게요 ^^

프로필 사진 사이즈 관련하여 문의좀 드릴게요 ^^

QA

프로필 사진 사이즈 관련하여 문의좀 드릴게요 ^^

본문

제가 스스로 찾아보고 싶었지만 정말 어려운게 php 인거같아요

 

도저히 어딜건드려야 할지 모르겠네요..!

 

기존에 팁자료실에 레이딘 님께서 올려주신 팁으로 아래링크구요

http://sir.kr/g5_tip/2158?sfl=wr_subject%7C%7Cwr_content&stx=%EC%82%AC%EC%A7%84 

 

정상적으로 설치하여 프로필사진이 나오는데요!

 

여기서 제가 궁금한점은

1) 사진을 등록하게되면 이게 양쪽이 잘리거나 위쪽 아래쪽이 잘리거나하는데요.!

   혹시 그냥 축소나 확대없이 전체적인 화면으로 나오게하려면 어디를 수정해야할까요.?

 

2) 프로필로 설정을 하여 프로필사진을 확인해보면 이미지가 너무 깨지는거같은데요 

  혹시 어디로 고쳐야 이미지가 sir.kr  홈페이지프로필처럼 깨끗하게 나올까요 

  config 파일 및 thumnail.lip 부분 퀄리티90으로 설정되어있었지만 아무리 숫자를 

  올리거나 내려도 변화가 없네요 

 

고수선배님들 정말 부탁드릴게요 ~!

아래 파일별 함수 넣었습니다 !!

 

 

 

 

이것은 register_form_update.tail.skin.php 의 함수구요^^

 

 

<?php

//----------------------------------------------------------

// 프로필 이미지 파일 업로드 시작

//----------------------------------------------------------

$mb_profile_img = '';

if (isset($_FILES['mb_profile_img']) && is_uploaded_file($_FILES['mb_profile_img']['tmp_name'])) {

$mb_profile_img_ext = array_pop(explode(".", strtolower($_FILES['mb_profile_img']['name'])));

 

if(@ereg($mb_profile_img_ext, "gif|jpg|jpeg|png")) {

        // 아이콘 용량이 1 MB 이하만 업로드 가능 (용량을 조정하고 싶으면 아래 수치 조정)

        if ($_FILES['mb_profile_img']['size'] <= (1 * 1024 * 1024)) {

 

            $dest_path_raw = G5_DATA_PATH."/member/profile_img/".$mb_id."_raw.".$mb_profile_img_ext;

            move_uploaded_file($_FILES['mb_profile_img']['tmp_name'], $dest_path_raw);

            $dest_path = G5_DATA_PATH."/member/profile_img/".$mb_id.".jpg";

 

$size = getimagesize($dest_path_raw);

if ($size[2] == 1 || $size[2] == 2 || $size[2] == 3) { // 이미지 파일이 진짜인지 판별

if($size[0] < 60 || $size[1] < 60) { // 이미지 사이즈가 너무 작을 경우

$msg .= '이미지 크기가 너무 작습니다. 가로세로 60픽셀 이상의 이미지를 올려주세요.';

} else {

if(file_exists($dest_path)) { // 이미 파일이 있을 경우(즉 수정일 경우) 먼저 파일을 삭제

@unlink($dest_path);

}

 

// 이미지 불러와서 판 깔기(...)

if($size[2] == 2) {

$image_call = imagecreatefromjpeg($dest_path_raw);

} elseif($size[2] == 1) {

$image_call = imagecreatefromgif($dest_path_raw);

} elseif($size[2] == 3) {

$image_call = imagecreatefrompng($dest_path_raw);

}

 

// 업로드된 이미지 시작점 및 크기 설정 (크롭)

// 기본값들

$basic_img_w = 60;

$basic_img_h = 60;

$src_img_x = 0;

$src_img_y = 0;

$src_img_w = $size[0];

$src_img_h = $size[1];

$des_img_x = 0;

$des_img_y = 0;

$des_img_w = $basic_img_w;

$des_img_h = $basic_img_h; 

if($size[0] > $size[1]) { // 가로가 길 경우

$src_img_w = $size[1];

switch($mb_profile_img_crop) {

case 1:

break;

case 2:

$src_img_x = $size[0] - $size[1];

break;

case 3:

$src_img_x = (int)(($size[0] - $size[1]) / 2);

break;

case 4:

$src_img_w = $size[0];

$des_img_h = (int)($basic_img_w * ($size[1] / $size[0]));

$des_img_y = (int)(($basic_img_h - $des_img_h) / 2);

break;

}

} elseif($size[0] < $size[1]) { // 세로가 길 경우

$src_img_h = $size[0];

switch($mb_profile_img_crop) {

case 1:

break;

case 2:

$src_img_y = $size[1] - $size[0];

break;

case 3:

$src_img_x = (int)(($size[1] - $size[0]) / 2);

break;

case 4:

$src_img_h = $size[1];

$des_img_w = (int)($basic_img_h * ($size[0] / $size[1]));

$des_img_x = (int)(($basic_img_w - $des_img_w) / 2);

break;

}

}

 

// 트루컬러 이미지 캔버스 준비

$image_canvas = imagecreatetruecolor($basic_img_w,$basic_img_h);

 

// 이미지 리사이즈

imagecopyresampled($image_canvas, $image_call, $des_img_x, $des_img_y, $src_img_x, $src_img_y, $des_img_w, $des_img_h, $src_img_w, $src_img_h);

 

// 이미지 저장

imagejpeg($image_canvas, $dest_path, 90);

 

 

// 메모리에서 작업내용 삭제

imagedestroy($image_call);

imagedestroy($image_canvas);

 

// 원본 이미지 삭제

@unlink($dest_path_raw);

}

 

            } else { // gif,jpg,png 파일이 아니면 올라간 이미지를 삭제한다.

@unlink($dest_path_raw);

}

        } else {

            $msg .= '프로필 이미지를 1 MB 이하로 업로드 해주십시오.';

        }

 

    } else {

        $msg .= $_FILES['$mb_profile_img']['name'].'은(는) 이미지 파일이 아닙니다.';

    }

 

if($mb_profile_img_del == 1) { // 파일 삭제에 체크가 들어온 경우

$dest_path = G5_DATA_PATH."/member/profile_img/".$mb_id.".jpg";

@unlink($dest_path);

}

//----------------------------------------------------------

// 프로필 이미지 파일 업로드 끝

//----------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

아래 함수가 register_form_skin.php 함수예요

 

 

<input type="file" name="mb_profile_img" id="reg_mb_profile_img">

<?php

$file_check = file_exists(G5_DATA_PATH."/member/profile_img/".$member['mb_id'].".jpg");

if (!$file_check) { ?>

<div class="file-exists">

이미 프로필 이미지가 등록되어 있습니다. 새 이미지를 등록하면 이전 이미지를 덮어씁니다.<br>이전 이미지를 삭제만 하려면 아래 <strong>프로필 이미지 삭제</strong>에 체크하세요.<br>

<label class="image_del"><input type="checkbox" name="mb_profile_img_del" id="mb_profile_img_del" value="1"> 프로필 이미지 삭제</label>

</div>

<?php } ?>

<span class="help-block">프로필 이미지의 비율은 가로세로 1:1이고, 비율이 맞지 않을 경우에는 조정합니다.<br>

아래 메뉴에서 이미지를 어떻게 조정할 지 선택하세요.</span>

<label><input type="radio" name="mb_profile_img_crop" id="reg_mb_profile_img_crop1" value="1" checked>왼쪽이나 위쪽 기준으로 이미지 자름</label>

<label><input type="radio" name="mb_profile_img_crop" id="reg_mb_profile_img_crop2" value="2" checked>오른쪽이나 아래쪽 기준으로 이미지 자름</label>

<label><input type="radio" name="mb_profile_img_crop" id="reg_mb_profile_img_crop3" value="3" checked>중앙 기준으로 이미지 자름</label>

<label><input type="radio" name="mb_profile_img_crop" id="reg_mb_profile_img_crop4" value="4" checked>빈 부분에 레터박스 채워넣음</label>






이 질문에 댓글 쓰기 :

답변 1

제시해주신 소스에서는 원본 이미지를 삭제하도록 되어 있네요.

"랑기랑기"님께서 원하는 방식으로 하시려면 원본이미지도 함께 저장되도록 해야합니다.

 

위 소스에서

-----------------

// 원본 이미지 삭제
@unlink($dest_path_raw);
-----------------

이 부분을 아래와 같이 수정하시고

-----------------

// 원본 이미지 삭제
$dest_path_ori = G5_DATA_PATH.'/member/profile_img/'.$mb_id.'_ori.jpg';
($dest_path_raw, $dest_path_ori);
@unlink($dest_path_raw);

-----------------

표현할 이미지를 다음과 같이 해보세요.(이미지 크기: 가로,세로 100px)

<img src="<?php echo G5_DATA_URL.'/member/profile_img/'.$member['mb_id'].'_ori.jpg';?>" width="100" height="100">

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,674 | RSS
QA 내용 검색

회원로그인

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