I am using a image thumbnailing library (Laravel’s resizer bundle) which takes a jpg from a directory and uses imagesx()
to save that image in a different size. This works without error most of the time.
Problem: However sometimes when there is a batch of images to be processed, I get the error below. While debugging, I did
.... print_r($this->image); imagesx($this->image); ....
PHP output
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): LaravelError::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): LaravelRoutingController->response('crawl_next_item', Array) #9 /home/dev/public_html/laravel/routing/controller.php(165): LaravelRoutingController->execute('crawl_next_item', Array) #10 /home/dev/public_html/laravel/routing/route.php(153): LaravelRoutingController::call('crawl.cl@(:1)', Array) #11 /home/dev/public_html/laravel/routing/route.php(124): LaravelRoutingRoute->response() #12 /home/dev/public_html/laravel/laravel.php(165): LaravelRoutingRoute->call() #13 /home/dev/public_html/public/index.php(34): require('/home/dev/publi...') #14 {main}
Together with the stack trace above, you can see that $this->image
is false
right after its Resource id #166
.
Any idea what may have caused this? I dont understand why it can sometimes be false
. Thanks!
Advertisement
Answer
This is happening because the mime type for that file isn’t being recognised or is not a jpg/jpeg/png/gif.
The $this->image is being set to false on line 196 in resizer.php.
If you can’t get it to work, please create an issue on Github so I can follow it up 🙂