2012-09-18 2 views
3

디렉토리에서 jpg를 가져와 imagesx()을 사용하여 이미지를 다른 크기로 저장하는 이미지 미리보기 라이브러리 (Laravel의 resizer bundle)를 사용하고 있습니다. 이것은 대부분의 시간 오류없이 작동합니다.imagesx()는 매개 변수 1이 리소스가 될 것으로 예상하고, 부울은 주어진 것입니다.

문제 : 그러나 처리 할 이미지 묶음이있을 때 아래 오류가 나타납니다. 디버깅하는 동안, 나는 위의 스택 추적과 함께

.... 
print_r($this->image); 
imagesx($this->image); 
.... 

PHP 출력

Resource id #64Resource id #67Resource id #73Resource id #76Resource id #82Resource id #85Resource id #91Resource id #94Resource id #100Resource id #103Resource id #109Resource id #112Resource id #118Resource id #121Resource id #127Resource id #130Resource id #136Resource id #139Resource id #145Resource id #148Resource id #154Resource id #157Resource id #163Resource id #166 

Unhandled Exception 

Message: 

imagesx() expects parameter 1 to be resource, boolean given 
Location: 

/home/dev/public_html/bundles/resizer/resizer.php on line 69 
Stack Trace: 

#0 /home/dev/public_html/laravel/laravel.php(40): Laravel\Error::native(2, 'imagesx() expec...', '/home/dev/publi...', 69) 
#1 [internal function]: Laravel\{closure}(2, 'imagesx() expec...', '/home/dev/publi...', 69, Array) 
#2 /home/dev/public_html/bundles/resizer/resizer.php(69): imagesx(false) 
#3 /home/dev/public_html/bundles/resizer/resizer.php(81): Resizer->__construct('/home/photos/pu...') 
#4 /home/dev/public_html/application/controllers/crawl/cl.php(369): Resizer::open('/home/photos/pu...') 
#5 /home/dev/public_html/application/controllers/crawl/cl.php(315): Crawl_CL_Controller->save_photos(Array, 2516533, '2012-09-17 18:4...') 
#6 [internal function]: Crawl_CL_Controller->action_crawl_next_item() 
#7 /home/dev/public_html/laravel/routing/controller.php(325): call_user_func_array(Array, Array) 
#8 /home/dev/public_html/laravel/routing/controller.php(285): Laravel\Routing\Controller->response('crawl_next_item', Array) 
#9 /home/dev/public_html/laravel/routing/controller.php(165): Laravel\Routing\Controller->execute('crawl_next_item', Array) 
#10 /home/dev/public_html/laravel/routing/route.php(153): Laravel\Routing\Controller::call('[email protected](:1)', Array) 
#11 /home/dev/public_html/laravel/routing/route.php(124): Laravel\Routing\Route->response() 
#12 /home/dev/public_html/laravel/laravel.php(165): Laravel\Routing\Route->call() 
#13 /home/dev/public_html/public/index.php(34): require('/home/dev/publi...') 
#14 {main} 

했다, 당신은 $this->image이 바로 그 Resource id #166false 것을 볼 수 있습니다.

이 문제의 원인은 무엇입니까? 나는 때때로 그것이 false 일 수있는 이유를 이해하지 못한다. 감사!

답변

2

해당 파일의 MIME 유형이 인식되지 않거나 jpg/jpeg/png/gif가 아니기 때문에 이러한 현상이 발생합니다.

$ this-> image는 resizer.php의 196 행에서 false로 설정됩니다.

당신이 일을 얻을 수없는 경우, Github에서의 문제를 만드십시오 그래서 나는 :-)

+0

내가()가'스위치를 확인하여 파일의 MIME 타입을 체크 아웃'부분 그것을 따를 수 있습니다 파일의 MIME 형식과 Laravel의 형식을 일치시키는 코드 나는 그 오류가 GD가 그 특별한 jpeg 파일을 다루지 못함에 기인한다고 믿는다. 나는 도서관과 그 일을 지금 바꿨다. – Nyxynyx

+5

@Nyxynyx - 그것이 당신을 위해 일하는 것은 대단한 일입니다.하지만 당신이 한 일을 어떻게 말해 주면 다른 사람을 도울 수 있습니까? – pguardiario

관련 문제