CI 묻고 답하기

제목 이미지 라이브러리 clear와 초기화 작업에 대한 질문입니다.
글쓴이 델리카토 작성시각 2014/12/01 18:46:28
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 13162   RSS
이미지 라이브러리 작업중 작업 진행이 잘 안되는 부분이 있어 이렇게 질문을 드립니다.

현재 resize_img라는 함수를 만들어서 업로드 파일이 이미지 일경우 썸네일을 만들고, 또한 기준 이미지 사이즈 보다 클 경우에 다시 리사이즈를 진행합니다.

즉, 한번에 리사이즈를 두번 진행하는데요, 문제는 리사이즈 함수를 두번 진행시에 발생합니다.

예를 들어 1번 이미지, 2번 이미지, 3번 이미지를 한번에 업로드 시에

1번 이미지는 썸네일을 생성하고 업로드 이미지도 리사이즈가 됩니다.

문제는 2번 이미지와 3번 이미지인데요.

썸네일이 생성되지 않고, 기존이미지가 썸네일로 변경후(create_thumb 적용 x) 다시 원본 사이즈가 리사이즈가 되는 현상이 발생합니다.
 
Wanna Be     현재    
1.jpg 썸네일 생성 1_thumb.jpg 1.jpg 썸네일 생성 1_thumb.jpg
  원본 리사이즈 1.jpg   원본 리사이즈 1.jpg
2.jpg 썸네일 생성 2_thumb.jpg 2.jpg 썸네일 생성x 2.jpg(썸네일이 생성 안되고 원본만 리사이즈됨)
  원본 리사이즈 2.jpg   원본 리사이즈 2.jpg(앞전 리사이즈 된 원본 파일을 다시 리사이즈함)
3.jpg 썸네일 생성 3_thumb.jpg 3.jpg 썸네일 생성x 3.jpg(썸네일이 생성 안되고 원본만 리사이즈됨)
  원본 리사이즈 3.jpg   원본 리사이즈 3.jpg(앞전 리사이즈 된 원본 파일을 다시 리사이즈함)


clear와 초기화 부분이 제대로 작동하지 않는것 같은데.....

혹시 원인을 알 수 있을까 해서 질문 게시판에 글을 올려봅니다.

감사합니다.


문제의 코드는 아래와 같습니다.
//##### 이미지 설정 #####//
if($img["is_image"]){
	//== 썸네일 생성 ==//
	resize_image($data["file_full_path"], TRUE, 480);
	
	//== 이미지 리사이즈 ==//
	resize_image($data["file_full_path"], FALSE, 1024);
}

function resize_image($path, $thumb=TRUE, $width=480, $height=10, $ratio=TRUE){
	$CI =& get_instance();
		
	$CI->load->library('image_lib');
	
	$config	= array(
		"source_image"	=> $path,
		"quality"		=> "60%",
		"width"			=> $width,
		"height"		=> $height,
		"create_thumb"	=> $thumb,
		"maintain_ratio"=> $ratio,
		"master_dim"	=> ($width>$height)?"width":"height"
	);
	
	$CI->image_lib->initialize($config);
	$CI->image_lib->resize();
	$CI->image_lib->clear();
}
 다음글 컨트롤러에서 뷰에 다중데이터 리턴이 안되요 (2)
 이전글 view 단에서 application 폴더 접근할순 없... (2)

댓글

델리카토 / 2014/12/01 19:56:13 / 추천 0
저는 일단 create_thumb 을 FALSE로 하고,
new_image를 생성해서 썸네일을 생성하는 경우에는 new_image경로를 강제 생성하고, 리사이즈를 하는 경우에는 그대로 놔두는 방법으로 처리했습니다.
제가 위에 작성했던 코드가 틀린것 같지는 않은데... 어디에 문제가 있었던 것일까요?

문제는 create_thumb이 한번 False로 되면 다시 true로는 바뀌지 않는게 문제인데요....(clear를 하더라도요)

다른건 문제가 없어요..... 
변종원(웅파) / 2014/12/02 11:14:22 / 추천 0
$CI->image_lib->clear();는 함수형태가 아니라 프로그램 내에서 연속적으로 다른 썸네일 사이즈를 만들때 사용합니다.

initialize는 한번만 하는 것이고 clear로 해당 config를 지우고 다시 설정하는 방식입니다.

 
델리카토 / 2014/12/03 10:55:03 / 추천 0
변종원님 답변 감사합니다. ^^

문제는 clear로 다른 config는 지워지는데 create_thumb이 안지워지더라구요.....

그래서 봤더니 clear함수에 create_thumb를 지우지 않더라구요. 이유는 모르겠지만요.....

clear 함수에 지워야 할것들(config변수들 new_image, quality등)이 배열로 있고, foreach로 이부분을 비우는 방식인데, create_thumb만 없어요.

이유도 잘 모르고, 해서 배열에 삽입은 안시키고, 다른 방법으로 우회해서 해결을 했습니다...