Skip to content

Commit 3251185

Browse files
committed
Expanding JImage Docs
Expanding examples
1 parent 8f31a2c commit 3251185

File tree

1 file changed

+71
-8
lines changed

1 file changed

+71
-8
lines changed

manual/en-US/chapters/packages/image.md

Lines changed: 71 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ Manipulating images in raw PHP using the `GD` image* functions requires a lot of
66

77
All classes in this package are supported by the auto-loader so can be invoked at any time.
88

9-
### JImage
10-
11-
#### Construction
9+
### Construction
1210

1311
When creating a new `JImage` object, the constructor will check that the `gd` extension is loaded, and throw a `RuntimeException` if it is not.
1412

@@ -34,10 +32,69 @@ $image = new JImage;
3432
$image->loadFile(JPATH_SITE . '/media/com_foo/images/uploads/bar.png');
3533
```
3634

37-
#### Usage
35+
### Usage
36+
37+
Keep in mind that most public methods return a `JImage` instance with a valid image handle for easy method chaining. The examples for each method will break each method call out to be able to comment on what the code is doing, but production code can be chained like so (if you prefer):
38+
39+
```php
40+
$image = new JImage();
41+
$image->loadFile(JPATH_SITE . '/path/to/image.png')->crop(600, 250)->toFile(JPATH_SITE . '/tmp/image.png');
42+
```
43+
44+
Since Platform version 12.3, there is a new `destroy()` method that get's called in appropriate places throughout the class which runs the `imagedestroy` function to free memory associated with an image handle. This method is called before each time an image handle is replaced (when `$createNew` is set to false) as well as in the class `__descruct` method as a final cleanup.
45+
46+
47+
#### The `resize` method
48+
__Accepted Parameters__
49+
* `$width`: The width of the resized image in pixels or a percentage.
50+
* `$height`: The height of the resized image in pixels or a percentage.
51+
* `$createNew`: If true the current image will be cloned, resized and returned; else the current image will be resized and returned.
52+
* `$scaleMethod`: Which method to use for scaling
53+
54+
Example: Using `JImage::resize()` to generate a resized image.
55+
56+
```php
57+
// Create our image object
58+
$image = new JImage(JPATH_SITE . '/media/com_foo/images/uploads/bar.png');
59+
60+
// Resize the image using the SCALE_INSIDE method
61+
$image->resize(300, 150, true, JImage::SCALE_INSIDE);
62+
63+
// Write it to disk
64+
$image->toFile(JPATH_SITE . '/tmp/bar_resized.png');
65+
66+
```
67+
3868

39-
##### The `createThumbs` method
40-
A common usage of the `JImage` class would be to resize uploaded images to thumbnails. Here is some example code for that.
69+
#### The `crop` method
70+
__Accepted Parameters__
71+
* `$width`: The width of the image section to crop in pixels or a percentage.
72+
* `$height`: The height of the image section to crop in pixels or a percentage.
73+
* `$left`: The number of pixels from the left to start cropping.
74+
* `$top`: The number of pixels from the top to start cropping.
75+
* `$createNew`: If true the current image will be cloned, cropped and returned; else the current image will be cropped and returned.
76+
77+
Example: Using `JImage::crop()` to generate a cropped image.
78+
79+
```php
80+
// Create our image object
81+
$image = new JImage(JPATH_SITE . '/media/com_foo/images/uploads/bar.png');
82+
83+
// Crop the image to 150px square, starting 10 pixels from the left, and 20 pixels from the top
84+
$image->crop(150, null, 10, 20);
85+
86+
// Write it to disk
87+
$image->toFile(JPATH_SITE . '/tmp/bar_cropped.png');
88+
```
89+
90+
91+
#### The `createThumbs` method
92+
__Accepted Parameters__
93+
* `$thumbsizes`: String or array of strings. Example: $thumbSizes = array('150x75','250x150');
94+
* `$creationMethod`: See __Resize Methods__ below.
95+
* `$thumbsFolder`: Destination for thumbnails. Passing null generates a thumbs folder in the loaded image's containing folder.
96+
97+
Example: Using `JImage::createThumbs()` to generate thumbnails of an image.
4198

4299
```php
43100
// Set the desired sizes for our thumbnails.
@@ -47,10 +104,16 @@ $sizes = array('300x300', '64x64', '250x125');
47104
$image = new JImage(JPATH_SITE . '/media/com_foo/images/uploads/uploadedImage.jpg');
48105

49106
// Create the thumbnails
50-
$image->createThumbs($sizes);
107+
$image->createThumbs($sizes, JImage::SCALE_INSIDE);
51108
```
52109

53-
In this example, we use the `createThumbs` method of `JImage`. This method takes 2 parameters. The first parameter can be a string containing a single size in `WIDTHxHEIGHT` format, or it can be an array of sizes in the format (as shown in the example). The second parameter specifizes the resize method, and is one of the following:
110+
In this example, we use the `createThumbs` method of `JImage`. This method takes 2 parameters. The first parameter can be a string containing a single size in `WIDTHxHEIGHT` format, or it can be an array of sizes in the format (as shown in the example). The second parameter specifizes the resize method. (See Resize Methods below)
111+
112+
113+
#### Resize Methods
114+
115+
The `resize`, `createThumbs` and `generateThumbs` methods take an optional parameter that defines what method to use when scaling an image.
116+
This parameter can be one of the following:
54117

55118
* `JImage::SCALE_FILL` - Gives you a thumbnail of the exact size, stretched or squished to fit the parameters.
56119
* `JImage::SCALE_INSIDE` - Fits your thumbnail within your given parameters. It will not be any taller or wider than the size passed, whichever is larger.

0 commit comments

Comments
 (0)