Severity: 8192
Message: Return type of CI_Session_files_driver::open($save_path, $name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 132
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 290
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::read($session_id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 164
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::write($session_id, $session_data) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 233
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::destroy($session_id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 313
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Return type of CI_Session_files_driver::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
Filename: drivers/Session_files_driver.php
Line Number: 354
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 284
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: session_set_cookie_params(): Session cookie parameters cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 291
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 306
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 316
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 317
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 318
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 319
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: ini_set(): Session ini settings cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 377
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent
Filename: Session/Session.php
Line Number: 110
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: Warning
Message: session_start(): Session cannot be started after headers have already been sent
Filename: Session/Session.php
Line Number: 143
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Creation of dynamic property CI_Cache::$apc is deprecated
Filename: libraries/Driver.php
Line Number: 188
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/models/DefaultModel.php
Line: 8
Function: driver
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
Severity: 8192
Message: Creation of dynamic property CI_Cache::$file is deprecated
Filename: libraries/Driver.php
Line Number: 188
Backtrace:
File: /home/palugada/domains/envato.palugada.top/public_html/application/models/DefaultModel.php
Line: 8
Function: driver
File: /home/palugada/domains/envato.palugada.top/public_html/application/core/MY_Controller.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/application/controllers/Codecanyon.php
Line: 6
Function: __construct
File: /home/palugada/domains/envato.palugada.top/public_html/index.php
Line: 315
Function: require_once
By : pqina Published On Wednesday, December 17, 2025, 05:54 In JavaScript
Slim is a cross platform Image Cropping and Uploading plugin. It’s very easy to setup and features beautiful graphics and animations.
Quick feature overview:
Slim is build to work standalone but is very flexible and can be used with:
Give it a test run:
Slim is build using the latest HTML 5, CSS 3 and JavaScript techniques.
Slim ships with extensive documentation on all it’s capabilities.
Just contact us through the form on the Support page, we’re always happy to help out with any questions or problems.
“This plugin is incredible. It is very well built and very well documented. The design is obviously very clean and sleek as you can tell from the demo, but I was surprised how easy it was to implement. The seller even provides server side scripts that you can use to easily handle the output and saving the images. The number of customizable options is incredible and setup is really easy.”
by jacurtis
“Quick response to questions and a great product.”
by miltonarcos
“Perfect … easy to integrate and fast code updates”
by mintao
“Great, easy to use plugin for image upload and cropping. Sleek design that will fit the look and feel of any modern website. Had some issues with implementing into a complicated ajax form and the customer support was superb! Great job!”
“This plugin definitely scores 100000000% with it’s awesome support. The author replied all my questions in record time and even went as far as releasing an update to fix a bug the same day I complained about it. This is definitely one of the best plugins on Envato for image manipulation and a must have for every website.”
by Kendysond
“Excellent support & awesome plugin!”
by martneli
Beautiful Animations | Today, it’s all about a nice and smooth user experience, this is where Slim delivers big time.
Responsive | In this day and age, of course this plugin is responsive.
Mobile Friendly | Slim has been optimized to also work with touch input on mobile devices.
Browser Cropping | Cropping is done on the client, no image manipulation script required on the server.
Crop | Specify the output ratio, be it square (1:1), portrait (3:4), movie mode (16:9) a custom ratio or the ratio of the input image, Slim has got you covered.
Rotate | Rotate the image to a 90, 180 or 270 degrees angle.
AutoCrop | Slim will automatically crop the image to best fit the specified output ratio.
AutoRotate | Mobile devices can embed rotation information in photographs, this often results in rotated or incorrectly read imagery. Slim automatically corrects this and presents the photo the way it was intended.
AutoSize | Specify the maximum size of the output image and Slim will scale down the image to fit perfectly. Tip: Use AutoSize with a square ratio to quickly crop avatars.
Drop URLs | Loads dropped URLs from other websites just as easy as it loads dropped images.
AJAX and Form POST | Upload cropped images with AJAX or with a traditional form post. When using AJAX Slim shows a neat progress indicator.
Very Fast | Slim’s code is optimized for performance. On top of optimal code paths, Slims animations assist in making the cropping experience feel smooth and fast.
Standalone | No client-side or server-side frameworks or libraries are required.
PHP Helper Class | Handy PHP helper class included. This makes it easy for you to get to the uploaded images. If you’re planning to use Slim with ASP.Net / NodeJS or any other server side language this file should give you a good indication on how to setup Slim on the server.
Bootstrap and Foundation Support | Tested and works nicely with both Bootstrap and Foundation.
Angular and React Wrappers | The package contains wrapper modules for both Angular 1.x, 2.0 and React.
Easy to Configure | Setting up Slim is a matter of adding some data attributes to your HTML and presto, you’re ready to crop and upload images.
Edit Server Images | Slim can also load images via URL, this allows you to use Slim to quickly crop server images.
Change Labels | All texts and icons can be configured using data attributes.
Vanilla JavaScript and jQuery | Whether you’re an old school JavaScript fanatic or a jQuery lover, Slim’s got you covered. The package also contains AMD, CommonJS, ES6 and Global build of Slim.
JavaScript API | You can control the cropper from JavaScript or jQuery whichever you like best. The extensive API documentation should give you a good idea on what is possible with Slim.
And Much More | Read about all Slim’s features
The following articles describe how to add additional much requested functionality to Slim.
On very old browsers ( older than Internet Explorer 8 ), Slim won’t load due to lack of JavaScript functionality. On Internet Explorer 8 and 9 it will show an incompatible message.
Slim makes use of SVG icons made by Egor Rumyantsev, these icons are licensed under Creative Commons 3.0 BY.
For animations Slim makes use of Snabbt.js, blurring is done using Stack Blur and images are transformed in to manageable canvas elements with LoadImage. All three libraries available for commercial use under the MIT license.
4.7.1 | 05-05-2017
4.7.0 | 25-04-2017
mb_ereg to preg).4.6.5 | 20-04-2017
4.6.4 | 30-03-2017
4.6.3 | 21-03-2017
4.6.2 | 17-03-2017
4.6.1 | 10-03-2017
data-drop-replace attribute which when set to false will disable drop image to replace currently loaded image.4.6.0 | 08-03-2017
data-did-confirm callback which is called after the user presses the confirm button in the image editordata-did-cancel callback which is called after the user presses the cancel button in the image editorrotation and filter information to PHP data object..supported property, now more accurate. Will return false when not supported, will show error message when creating a cropper on unsupported browser. 4.5.2 | 22-02-2017
4.5.1 | 21-02-2017
4.5.0 | 15-02-2017
data-filter-sharpen attribute, set to value between 0 and 100 to sharpen image after resize. Default is 0, a value between 10 and 20 gives the illusion of improved image quality.4.4.0 | 08-02-2017
data-upload-base64 to "true" if you wish to still send base64 data. Note that synchronous uploading still sends base64 data as it’s not possible to “write” a file to a file input field.4.3.0 | 06-02-2017
data-save-initial-image.data-did-receive-server-error handler.4.2.1 | 01-02-2017
data-push progress indicator not being accurate.4.2.0 | 30-01-2017
rotation and setRotation end points to API to manually set image rotation.data-rotation attribute to set initial image rotation4.1.6 | 29-01-2017
4.1.5 | 28-01-2017
4.1.4 | 27-01-2017
internalCanvasSize property. Which can be set to limit the internal canvas size Slim uses to load images. If a browser limits the canvas size this can be used to prevent overflowing the limit. Slim will automatically set this based on your size or forceSize settings.4.1.3 | 18-01-2017
4.1.2 | 16-01-2017
Slim.destroy did not correctly remove image editor element.4.1.1 | 16-12-2016
4.1.0 | 15-12-2016
setSize and setRatio methods which both have a callback that returns the data after size and ratio have been applied.4.0.2 | 08-12-2016
data-rotate-button which can be set to “false” to hide the rotate button.data-push mode combined with data-instant-edit would push second image before editing. 4.0.1 | 23-11-2016
data-instant-edit mode would remove image on editor cancel when initial image was set.4.0.0 | 21-11-2016
The way input and output file names are now stored is a bit different. Input will always be the name of the input file. Output will contain the name as modified by for instance data-force-type. It’s important to test this when upgrading from an earlier version.
input data Slim now sends the original file instead of the Base64 version.data-post.data-instant-edit where when cancelled the image would still be loaded.3.4.1 | 20-11-2016
3.4.0 | 15-11-2016
data-force-size attribute which allows forcing the output size to a certain width and height.3.3.2 | 07-11-2016
3.3.1 | 27-10-2016
3.3.0 | 19-10-2016
3.2.0 | 15-10-2016
3.1.1 | 29-09-2016
3.1.0 | 23-09-2016
3.0.3 | 06-09-2016
3.0.2 | 05-09-2016
3.0.1 | 21-08-2016
3.0.0 | 19-08-2016
This version contains changes to the jQuery API. These are small but incompatible with the previous version of Slim. The documentation has been updated to clearly illustrate all the changes.
2.3.2 | 12-08-2016
2.3.1 | 09-08-2016
2.3.0 | 06-08-2016
size output after initialisation.ratio after initialisation.2.2.1 | 28-07-2016
2.2.0 | 21-07-2016
data-save-initial-image attribute which when set to true saves initial image data after initialisation. didTransform callbackcrop(rect, callback), this method expects input to adhere to bounds of image and the image ratio.edit() method to summon the editor manuallydata-instant-edit to true to summon the image editor on file dropdata-force-type, set to jpg or png to force the output type.2.1.0 | 12-07-2016
didSave method which is called after saving the data.dataBase64 property which returns the data in final form (similar to the format in which it is saved / sent to the server)data-jpeg-compression for output image2.0.0 | 07-07-2016
This version contains changes to callback names and callback scope, if you update from a previous versions you’ll have to rename the callback methods (exact changes are outlined below).
this in a callback now refers to Slim instance it belongs to. onInit(slim) has been changed to didInit(data)onComplete(error, response) has been changed to didUpload(error, data, response)onRemove(slim, data) has been changed to didRemove(data)onBeforeRemove(slim, remove) has been changed to willRemove(data, remove)onTransform(data, ready) has been changed to willTransform(data, ready)onSave(data, ready) has been changed to willSave(data, ready).element now returns root element of Slim cropper. Combined with the fixed callback scope you can now use jQuery $(this.element) within a callback to refer to the root of the cropper.mkdir in “Slim.php” method so saveFile can now also create sub directories like foo/bar/ instead of only foo/1.1.1 | 27-06-2016
onBeforeRemoval callback so you can optionally ask if the user is sure of a image removal.1.1.0 | 23-06-2016
data-on-complete callbackdata-crop or by passing crop options to JavaScript load method.datameta property alone for custom values.1.0.7 | 16-06-2016
1.0.6 | 15-06-2016
1.0.5 | 14-06-2016
1.0.4 | 10-06-2016
1.0.3 | 07-06-2016
1.0.2 | 03-06-2016
1.0.1 | 02-06-2016
1.0.0 | 26-05-2016