CI 묻고 답하기

제목 upload후 resize질문입니다
카테고리 CIBOARD
글쓴이 공부가필요한 작성시각 2018/03/15 14:34:43
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 13843   RSS

우선 제가 작성하려는 코드는 

이미지 파일 하나를 업로드하면 resize되어 a.jpg 와 a_thumb.jpg가 s3로 업로드되도록 작업하고있습니다.

우선 원본파일은 잘올라갑니다. 하지만 resize시킨 파일은 업로드 되지않네요 ,, 

 

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        		$params = [
        			'Bucket' =>	$bucket, 
		    		'Key'    => $name, // 저장할떄 이름
		    		'Body'   => fopen($target_file, 'r'), // 경로의 이미지를 받아 저장
		    		'ACL'	 => 'public-read',
		    		'ContentType' => $imageFileType
		    	];
		    	error_log('a4');

		    	$result = $s3Client->putObject($params);
		    	$command = $s3Client->getCommand('PutObject', $params);
		    	$result = $s3Client->execute($command);
		    	error_log('a5');

		    	$this->resize();



public function resize(){

		$config['image_library'] = 'gd2';
		$config['source_image'] = 'test/$name'; 
		$config['thumb_marker'] = '_thumb';
                $config['new_image'] = 'test/$name'; 
                $config['create_thumb'] = TRUE;
                $config['maintain_ratio'] = TRUE; 
                $config['width'] = 500; 
                $config['height'] = 300; 

        $this->load->library('image_lib',$config);
		$this->image_lib->clear();
        $this->image_lib->initialize();

        $this->image_lib->resize();
        error_log('start');
}

 

입니다 error_log를 했는데 resize까지 실행이 잘되고있습니다.

참고자료를봐도 여기서 어떤부분을 추가해야할지 어느부분이 잘못되었는지 모르겠어서 답변부탁드리겠습니다.

태그 upload,resize
 다음글 token 생성에 대한 의문 (5)
 이전글 datatables에서 pdfmake 사용중 javas... (9)

댓글

변종원(웅파) / 2018/03/15 15:16:39 / 추천 0

리사이즈 함수에 전달되는 내용이 아무 것도 없습니다.

파일 풀패스 전달해서 원본위치를 리사이즈 라이브러리에 알려줘야 합니다.

빛그림 / 2018/03/15 15:18:47 / 추천 0

$this->resize($name);

이렇게 리사이징 할 화일명을 전달해주셔야 할듯요

공부가필요한 / 2018/03/15 16:00:05 / 추천 0

웅파님 , 빛그림님

네 말씀하신대로 하였습니다.

그런데 아직 파일은 하나밖에 안들어가네요.. 경로때문인가요? 아직 서툴러서 어렵네요 ㅜㅜ..
$this->resize($target_file);

public function resize($target_file){

	$config['image_library'] = 'gd2'; 
	$config['source_image'] = 'test/'+ $target_file; 
	$config['thumb_marker'] = '_thumb'; 
        $config['create_thumb'] = TRUE; 
        $config['maintain_ratio'] = TRUE; 
        $config['width'] = 500; 
        $config['height'] = 300;
        $this->load->library('image_lib',$config);
        $this->image_lib->clear();
        $this->image_lib->initialize();

        $this->image_lib->resize();
        error_log('start');

        if(! $this->image_lib->resize())
        {
        	echo $this->image_lib->displayerror();
        }

      }


이런식으로 불어왔으며 

target_file 안에는 이런내용이 들어있습니다.

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

빛그림 / 2018/03/15 17:59:50 / 추천 0

화일 갯수만큼 업로드 라이브러리가 반복 한다면 화일 갯수만큼 업로드가 될테고, 업로드 라이브러리가 동작할때마다 리사이징 함수도 함께 동할 것입니다.

아래처럼... 

for($i=0; $i<count($_FILES['upload_file']['name']); $i++) {
    if (!empty($upload_file[$i])) {
        // 업로드 라이브러리 사용
    }
}

공부가필요한 / 2018/03/15 20:07:07 / 추천 0

@빛그림

정말감사합니다! 덕분에 해결했습니다! 제경로문제였네요 ㅜㅜ...

저혹시 resize가 width랑 height로 설정해서 사이즈를 바꾸는 거잖아요 

이게 용량으로도 조절을해서 예를들어 이미지를 100바이트 500바이트 이렇게 구분지어서 resize할수있나요?

빛그림 / 2018/03/15 20:51:03 / 추천 0

리사이즈라는게 가로, 세로 크기를 기준으로 하는건데 용량이 문제라면 quality을 이용해서 용량을 줄이시면 됩니다만

원하시는대로 사이즈를 기준으로 할수는 없습니다. 

굳이 하겠다면 리사이징 하고난 뒤에 용량 체크해서 만족스러운 용량이 될때까지 quality값을 낮춰가며 리사이징을 계속 돌리는

반복문을 이용하시면 되는데 그렇게까지 할 필요있나 싶은 생각이 듭니다만 뭐 필요하니까 하려고 하시는거겠죠. ㅎㅎㅎ

공부가필요한 / 2018/03/16 07:43:03 / 추천 0

@빛그림

도움주셔서 감사합니다! 한번해보겠습니다! ㅎㅎ