묻고답하기
닉네임 이미지 확장자 관련....
2013.01.18 21:08
닉네임 이미지 사용을 하려고 하는데 위와 같이 올린 이미지가 배경이 있는 gif 파일로 변환이 되어 버려서 투명한 배경 처리가 되지
않습니다. PNG파일로 만들어 업로드를 하면 GIF로 자동으로 변환 되는 듯 합니다.
<--- 요 이미지가 제가 투명배경으로 만든 닉네임 이미지 입니다.
투명하게 처리되게끔 할 수 없을까요 ??
댓글 2
-
sejin7940
2013.01.18 21:29
-
몽실아빠
2013.01.18 21:47
설정된 이미지에 맞춰서 제작해서 올려도 마찬가지 현상이 나타나더군요. 그럼 서버에서 처리를 못하는 건가요 ? -
sejin7940
2013.01.18 21:57
살펴보니, 원본이 gif 가 아니면 이미지크기가 범위 이내에 들어가도, 강제로 이미지를 재생성하면서 gif 로 바꾸네요.. 결국 하단에 적어둔것처럼 소스를 고쳐야만 할듯합니다. -
몽실아빠
2013.01.18 22:12
소스를 고쳐도 동일하네요. -
송동우
2013.01.18 22:43
1.
xe - modules - member - member.controller.php 열고
line 685 쯤에
$target_filename = sprintf('%s%d.gif', $target_path, $member_srl);
이것을
$target_filename = sprintf('%s%d.png', $target_path, $member_srl);
이것으로 수정2.
line 689 쯤에
FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
이것을
FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'png');
이것으로 수정3.
xe - modules - member - member.model.php 열고
line 732 쯤에
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif'
이것을
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.png'
이것으로 수정4.
xe - addons - member_extra_info - member_extra_info.lib.php 열고
line 18 쯤에
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif',
이것을
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.png',
이것으로 수정위의 내용을 모두 바꿔야
완벽하게 png 파일로
게시판, 로그인위젯, 회원정보에
나타나게 됩니다.....
-
몽실아빠
2013.01.18 22:57
말씀하신대로 전부 수정하니 업로드된 이미지의 확장자는 png로 보이는데 배경이 흰색으로 된 파일이라 투명이 적용이 안되네요. -
몽실아빠
2013.01.18 23:17
투명png 파일을 올리면 png로 업로드가 되는데 배경이 흰색으로 생깁니다. -
몽실아빠
2013.01.18 23:17
그런데 신기하게 이제 투명 gif를 올리면 투명 png로 변환되어 투명으로 보입니다. -
송동우
2013.01.18 23:23
그 부분은 FileHandler 클래스 부분을 살펴봐야 할 것으로 보입니다...... -
몽실아빠
2013.01.18 23:30
어떻게 수정을 할 방법이 있을까요 ?
올린 이미지가 gif 가 아닌 경우는 무조건 gif 로 재생성 되고
gif 인 경우에도 설정되어있는 닉네임 이미지의 가로/세로크기 보다 올리신 이미지가 크면 재생성됩니다.
따라서 png 파일이면 무조건 gif 로 재생성되게 소스가 되어있습니다
이를 변경하고자하면..
moduls/member/member.controller.php 에서
function insertImageName 함수 내에.. 689번째 파일에서
if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
를
if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'png');
로 바꾸면 아마 png 로 생성이 될겁니다
다만 서버상에서, 'imagepng' 라는 함수를 지원해줘야만 png로 생성이 가능합니다.