mirror of
https://github.com/Intervention/image.git
synced 2025-08-16 19:04:00 +02:00
documentation improvements
This commit is contained in:
263
README.md
263
README.md
@@ -1,266 +1,15 @@
|
||||
# Intervention Image Class
|
||||
|
||||
Intervention Image Class is an image handling and manipulation wrapper library using [PHP GD library](http://www.php.net/manual/book.image.php). The class is written to make PHP image manipulating more easier and expressive.
|
||||
Intervention Image is a PHP Image handling and manipulation class with support for Laravel 4 integration.
|
||||
|
||||
The library requires at least **PHP version 5.3** and comes with [Laravel 4](https://github.com/laravel/framework/) Facades and Service Providers to simplify the optional framework integration.
|
||||
## Documentation
|
||||
|
||||
## Installation
|
||||
Refer to the following guide on how to use Intervention Image Class.
|
||||
|
||||
You can install this Image class quickly and easily with Composer.
|
||||
|
||||
Require the package via Composer in your `composer.json`.
|
||||
|
||||
"intervention/image": "dev-master"
|
||||
|
||||
Run Composer to install or update the new requirement.
|
||||
|
||||
$ composer update
|
||||
|
||||
Now you are able to require the `vendor/autoload.php` file to PSR-0 autoload the library.
|
||||
|
||||
### Laravel 4 Integration
|
||||
|
||||
The Image class also has optional Laravel 4 support. The integration into the framework is done in seconds.
|
||||
|
||||
Open your Laravel config file `config/app.php` and add the following lines.
|
||||
|
||||
In the `$providers` array add the service providers for this package.
|
||||
|
||||
'providers' => array(
|
||||
|
||||
[...]
|
||||
|
||||
'Intervention\Image\ImageServiceProvider'
|
||||
),
|
||||
|
||||
|
||||
Add the facade of this package to the `$aliases` array.
|
||||
|
||||
'aliases' => array(
|
||||
|
||||
[...]
|
||||
|
||||
'Image' => 'Intervention\Image\Facades\Image'
|
||||
),
|
||||
|
||||
## Usage
|
||||
|
||||
* Image::__construct - Create new instance of Image class
|
||||
* Image::make - Open a new image resource from image file
|
||||
* Image::canvas - Create a new empty image resource
|
||||
* Image::raw - Create a new image resource with image data from string
|
||||
* Image::open - Open a new image resource from image file
|
||||
* Image::resize - Resize current image based on given width and/or height
|
||||
* Image::crop - Crop the current image
|
||||
* Image::grab - Cut out a detail of the image in given ratio and resize to output size
|
||||
* Image::resizeCanvas - Resize image boundaries
|
||||
* Image::opacity - Set opacity of current image
|
||||
* Image::mask - Apply given image as alpha mask on current image
|
||||
* Image::insert - Insert another image on top of the current image
|
||||
* Image::brightness - Changes brightness of current image (-100 = min brightness, 0 = no change, +100 = max brightness)
|
||||
* Image::contrast - Changes contrast of current image (-100 = min contrast, 0 = no change, +100 = max contrast)
|
||||
* Image::pixelate - Pixelate current image
|
||||
* Image::greyscale - Turn current image into a greyscale version
|
||||
* Image::invert - Invert colors of current image
|
||||
* Image::rotate - Rotate image by a given value
|
||||
* Image::flip - Mirror image horizontally or vertically
|
||||
* Image::text - Write text in current image
|
||||
* Image::fill - Fill image with given color or image at position x,y
|
||||
* Image::rectangle - Draw rectangle in current image starting at point 1 and ending at point 2
|
||||
* Image::line - Draw a line in current image starting at point 1 and ending at point 2
|
||||
* Image::ellipse - Draw an ellipse centered at given coordinates
|
||||
* Image::circle - Draw a circle centered at given coordinates
|
||||
* Image::pixel - Set single pixel with given color at position x,y
|
||||
* Image::pickColor - Picks and formats color at position in current image
|
||||
* Image::reset - Reset to original image resource
|
||||
* Image::save - Save image in filesystem
|
||||
* Image::__toString - Returns image data depending on current format
|
||||
|
||||
### Code examples (Laravel)
|
||||
|
||||
#### Resize images
|
||||
|
||||
```php
|
||||
// create Image from file
|
||||
$img = Image::make('public/foo.jpg');
|
||||
|
||||
// resize image to fixed size
|
||||
$img->resize(300, 200);
|
||||
|
||||
// resize only the width of the image
|
||||
$img->resize(300, null);
|
||||
|
||||
// resize only the height of the image
|
||||
$img->resize(null, 200);
|
||||
|
||||
// resize the image to a width of 300 and constrain aspect ratio (auto height)
|
||||
$img->resize(300, null, true);
|
||||
|
||||
// resize the image to a height of 200 and constrain aspect ratio (auto width)
|
||||
$img->resize(null, 200, true);
|
||||
|
||||
// prevent possible upsizing with optional fourth parameter
|
||||
$img->resize(null, 400, true, false);
|
||||
|
||||
// Reset image resource to original
|
||||
$img->reset();
|
||||
|
||||
// save image in desired format and quality
|
||||
$img->save('public/bar.jpg', 60);
|
||||
```
|
||||
|
||||
#### Resize canvas
|
||||
|
||||
```php
|
||||
// create Image from file
|
||||
$img = Image::make('public/foo.jpg');
|
||||
|
||||
// resize image canvas
|
||||
$img->resizeCanvas(300, 200);
|
||||
|
||||
// resize only the width of the canvas
|
||||
$img->resizeCanvas(300, null);
|
||||
|
||||
// resize only the height of the canvas
|
||||
$img->resizeCanvas(null, 200);
|
||||
|
||||
// resize the canvas by cutting out bottom right position
|
||||
$img->resizeCanvas(300, 200, 'bottom-right');
|
||||
|
||||
// resize the canvas relative by setting the third parameter to true
|
||||
$img->resizeCanvas(10, -10, 'center', true);
|
||||
|
||||
// set a background-color for the emerging area
|
||||
$img->resizeCanvas(1280, 720, 'center', false, 'ff00ff');
|
||||
```
|
||||
|
||||
#### Crop image
|
||||
|
||||
```php
|
||||
// create Image from file
|
||||
$img = Image::make('public/foo.jpg');
|
||||
|
||||
// crop 300x200 pixel cutout at position x:200, y:100
|
||||
$img->crop(300, 200, 200, 100);
|
||||
|
||||
// crop 300x200 pixel cutout centered on current image
|
||||
$img->crop(300, 200);
|
||||
|
||||
// save image
|
||||
$img->save();
|
||||
```
|
||||
|
||||
#### Smart resizing
|
||||
|
||||
```php
|
||||
// use grab method to format images in a smart way combining cropping and resizing
|
||||
$img = Image::make('public/foo.jpg');
|
||||
|
||||
// crop the best fitting 1:1 ratio (200x200) and resize to 200x200 pixel
|
||||
$img->grab(200);
|
||||
|
||||
// crop the best fitting 5:3 (600x360) ratio and resize to 600x360 pixel
|
||||
$img->grab(600, 360);
|
||||
|
||||
// save image
|
||||
$img->save('public/bar.jpg');
|
||||
```
|
||||
|
||||
#### Create empty images and add content
|
||||
|
||||
```php
|
||||
// create an empty Image resource (background color transparent)
|
||||
$img = Image::canvas(640, 480);
|
||||
|
||||
// insert another image on top of current resource
|
||||
$img->insert('public/bar.png');
|
||||
|
||||
// write some text in image
|
||||
$img->text('Hello World', 10, 10);
|
||||
|
||||
// save image in desired format
|
||||
$img->save('public/foo.jpg');
|
||||
```
|
||||
|
||||
#### Image filters
|
||||
|
||||
```php
|
||||
// create Image from file
|
||||
$img = Image::make('public/foo.jpg');
|
||||
|
||||
// turn image into greyscale version
|
||||
$img->greyscale();
|
||||
|
||||
// modify brightness level
|
||||
$img->brightness(80);
|
||||
|
||||
// modify contrast level
|
||||
$img->contrast(-45);
|
||||
|
||||
// pixelate image with blocksize of 25x25 pixel
|
||||
$img->pixelate(25);
|
||||
```
|
||||
|
||||
#### Other examples
|
||||
|
||||
```php
|
||||
// create empty canvas
|
||||
$img = Image::canvas(800, 600);
|
||||
|
||||
// fill image with color
|
||||
$img->fill('cccccc');
|
||||
|
||||
// fill image with tiled image
|
||||
$img->fill(Image::make('tile.png'));
|
||||
|
||||
// draw a filled rectangle
|
||||
$img->rectangle('006729', 100, 100, 200, 200, true);
|
||||
|
||||
// draw a outline circle
|
||||
$img->circle('ae051f', 400, 300, 100, false);
|
||||
|
||||
// draw a red line from point 10,10 to point 300,300 pixel
|
||||
$img->line('ae051f', 10, 10, 300, 300);
|
||||
|
||||
// Apply image as alpha mask on image
|
||||
$img->mask('public/mask.png', true);
|
||||
|
||||
// rotate image 90° clockwise
|
||||
$img->rotate(90);
|
||||
|
||||
// set 75% opacity
|
||||
$img->opacity(75);
|
||||
|
||||
// flip image horizontally
|
||||
$img->flip('h');
|
||||
|
||||
// flip image vertically
|
||||
$img->flip('v');
|
||||
```
|
||||
|
||||
#### Method chaining
|
||||
|
||||
```php
|
||||
// it is possible to chain all methods
|
||||
$img1 = Image::canvas(800, 600);
|
||||
$img2 = Image::make('public/img2.png');
|
||||
$img1->resize(300, 200)->insert($img2)->save('public/bar.jpg');
|
||||
```
|
||||
|
||||
## Image Caching
|
||||
|
||||
The optional package [Intervention Image Cache](https://github.com/Intervention/imagecache/) extends the package to be capable of image caching. `Image::cache` will automatically detect if a cached file for the particular operations exists.
|
||||
|
||||
```php
|
||||
// run the operations on the image or read a file
|
||||
// for the particular operations from cache
|
||||
$img = Image::cache(function($image) {
|
||||
return $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
|
||||
});
|
||||
```
|
||||
|
||||
Read more about [Intervention Image Cache](https://github.com/Intervention/imagecache/).
|
||||
[Intervention Image Class Documentation](http://intervention.olivervogel.net/image/)
|
||||
|
||||
## License
|
||||
|
||||
Intervention Image Class is licensed under the [MIT License](http://opensource.org/licenses/MIT).
|
||||
|
||||
Copyright 2013 [Oliver Vogel](http://olivervogel.net/)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "intervention/image",
|
||||
"description": "Image handling and manipulation library with support for Laravel 4 integration",
|
||||
"homepage": "https://github.com/Intervention/image",
|
||||
"homepage": "http://intervention.olivervogel.net/image/",
|
||||
"keywords": ["image", "gd", "laravel"],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
|
@@ -10,77 +10,77 @@ class Image
|
||||
{
|
||||
/**
|
||||
* The image resource identifier of current image
|
||||
*
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
public $resource;
|
||||
|
||||
/**
|
||||
* Type of current image
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* Width of current image
|
||||
*
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $width;
|
||||
|
||||
/**
|
||||
* Height of current image
|
||||
*
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $height;
|
||||
|
||||
/**
|
||||
* Directory path of current image
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $dirname;
|
||||
|
||||
/**
|
||||
* Trailing name component of current image filename
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $basename;
|
||||
|
||||
/**
|
||||
* File extension of current image filename
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $extension;
|
||||
|
||||
/**
|
||||
* Combined filename (basename and extension)
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $filename;
|
||||
|
||||
/**
|
||||
* Instance of Illuminate\Filesystem\Filesystem
|
||||
*
|
||||
*
|
||||
* @var Filesystem
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* Attributes of the original created image
|
||||
*
|
||||
*
|
||||
* @var Array
|
||||
*/
|
||||
protected $original;
|
||||
|
||||
/**
|
||||
* Identifier for cached images
|
||||
*
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $cached = false;
|
||||
@@ -97,8 +97,8 @@ class Image
|
||||
{
|
||||
// create filesystem
|
||||
$this->filesystem = new Filesystem;
|
||||
|
||||
// set image properties
|
||||
|
||||
// set image properties
|
||||
if ( ! is_null($path)) {
|
||||
|
||||
$this->setPropertiesFromPath($path);
|
||||
@@ -177,7 +177,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Set properties for image resource from image file
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @return void
|
||||
*/
|
||||
@@ -235,7 +235,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Set properties for empty image resource
|
||||
*
|
||||
*
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param mixed $bgcolor
|
||||
@@ -259,7 +259,7 @@ class Image
|
||||
} else {
|
||||
$bgcolor = $this->parseColor($bgcolor);
|
||||
}
|
||||
|
||||
|
||||
imagefill($this->resource, 0, 0, $bgcolor);
|
||||
}
|
||||
|
||||
@@ -398,11 +398,11 @@ class Image
|
||||
throw new Exception('width or height needs to be defined');
|
||||
|
||||
} elseif (is_null($width)) { // If only the width hasn't been set, keep the current width.
|
||||
|
||||
|
||||
$width = $this->width;
|
||||
|
||||
} elseif (is_null($height)) { // If only the height hasn't been set, keep the current height.
|
||||
|
||||
|
||||
$height = $this->height;
|
||||
|
||||
}
|
||||
@@ -426,7 +426,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Resize image canvas
|
||||
*
|
||||
*
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param string $anchor
|
||||
@@ -444,7 +444,7 @@ class Image
|
||||
if ($relative) {
|
||||
$width = $this->width + $width;
|
||||
$height = $this->height + $height;
|
||||
}
|
||||
}
|
||||
|
||||
// check for negative width
|
||||
if ($width <= 0) {
|
||||
@@ -520,7 +520,7 @@ class Image
|
||||
$src_x = ($width < $this->width) ? intval(($this->width - $width) / 2) : 0;
|
||||
$src_y = ($height < $this->height) ? intval($this->height - $height) : 0;
|
||||
break;
|
||||
|
||||
|
||||
case 'bottom-right':
|
||||
$src_x = ($width < $this->width) ? intval($this->width - $width) : 0;
|
||||
$src_y = ($height < $this->height) ? intval($this->height - $height) : 0;
|
||||
@@ -588,7 +588,7 @@ class Image
|
||||
*
|
||||
* @param integer $width
|
||||
* @param integer $height
|
||||
*
|
||||
*
|
||||
* @return Image
|
||||
*/
|
||||
public function grab($width = null, $height = null)
|
||||
@@ -665,7 +665,7 @@ class Image
|
||||
$y = $height - 1;
|
||||
$height = $height * (-1);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
$x = $width - 1;
|
||||
$width = $width * (-1);
|
||||
@@ -693,21 +693,21 @@ class Image
|
||||
|
||||
/**
|
||||
* Set opacity of current image
|
||||
*
|
||||
* @param integer $value
|
||||
*
|
||||
* @param integer $transparency
|
||||
* @return Image
|
||||
*/
|
||||
public function opacity($value)
|
||||
public function opacity($transparency)
|
||||
{
|
||||
if ($value >= 0 && $value <= 100) {
|
||||
$value = intval($value) / 100;
|
||||
if ($transparency >= 0 && $transparency <= 100) {
|
||||
$transparency = intval($transparency) / 100;
|
||||
} else {
|
||||
throw new Exception('Opacity must be between 0 and 100');
|
||||
}
|
||||
|
||||
// create alpha mask
|
||||
$alpha = new self(null, $this->width, $this->height);
|
||||
$alpha->fill(sprintf('rgba(0, 0, 0, %.1f)', $value));
|
||||
$alpha->fill(sprintf('rgba(0, 0, 0, %.1f)', $transparency));
|
||||
|
||||
// apply alpha mask
|
||||
$this->mask($alpha, true);
|
||||
@@ -741,7 +741,7 @@ class Image
|
||||
|
||||
$color = $this->pickColor($x, $y, 'array');
|
||||
$alpha = $mask->pickColor($x, $y, 'array');
|
||||
|
||||
|
||||
if ($mask_with_alpha) {
|
||||
$alpha = $alpha['alpha']; // use alpha channel as mask
|
||||
} else {
|
||||
@@ -774,10 +774,10 @@ class Image
|
||||
* @param int $ignore_transparent
|
||||
* @return Image
|
||||
*/
|
||||
public function rotate($angle = 0, $color = '#000000', $ignore_transparent = 0)
|
||||
public function rotate($angle = 0, $bgcolor = '#000000', $ignore_transparent = 0)
|
||||
{
|
||||
// rotate image
|
||||
$this->resource = imagerotate($this->resource, $angle, $this->parseColor($color), $ignore_transparent);
|
||||
$this->resource = imagerotate($this->resource, $angle, $this->parseColor($bgcolor), $ignore_transparent);
|
||||
|
||||
// re-read width/height
|
||||
$this->width = imagesx($this->resource);
|
||||
@@ -809,7 +809,7 @@ class Image
|
||||
$color = IMG_COLOR_TILED;
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
// fill with color
|
||||
$color = $this->parseColor($color);
|
||||
}
|
||||
@@ -874,16 +874,16 @@ class Image
|
||||
* Draw an ellipse centered at given coordinates.
|
||||
*
|
||||
* @param string $color
|
||||
* @param integer $x
|
||||
* @param integer $y
|
||||
* @param integer $pos_x
|
||||
* @param integer $pos_y
|
||||
* @param integer $width
|
||||
* @param integer $height
|
||||
* @return Image
|
||||
*/
|
||||
public function ellipse($color, $x = 0, $y = 0, $width = 10, $height = 10, $filled = true)
|
||||
public function ellipse($color, $pos_x = 0, $pos_y = 0, $width = 10, $height = 10, $filled = true)
|
||||
{
|
||||
$callback = $filled ? 'imagefilledellipse' : 'imageellipse';
|
||||
call_user_func($callback, $this->resource, $x, $y, $width, $height, $this->parseColor($color));
|
||||
call_user_func($callback, $this->resource, $pos_x, $pos_y, $width, $height, $this->parseColor($color));
|
||||
|
||||
return $this;
|
||||
}
|
||||
@@ -1010,7 +1010,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Invert colors of current image
|
||||
*
|
||||
*
|
||||
* @return Image
|
||||
*/
|
||||
public function invert()
|
||||
@@ -1028,7 +1028,7 @@ class Image
|
||||
public function reset()
|
||||
{
|
||||
if (is_null($this->dirname) && is_null($this->basename)) {
|
||||
|
||||
|
||||
$this->setPropertiesEmpty($this->original['width'], $this->original['height']);
|
||||
|
||||
} else {
|
||||
@@ -1141,7 +1141,7 @@ class Image
|
||||
list($r, $g, $b, $alpha) = $value;
|
||||
|
||||
} elseif (count($value) == 3) {
|
||||
|
||||
|
||||
// color array without alpha value
|
||||
list($r, $g, $b) = $value;
|
||||
|
||||
@@ -1205,7 +1205,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Convert rgba alpha (0-1) value to gd value (0-127)
|
||||
*
|
||||
*
|
||||
* @param float $input
|
||||
* @return int
|
||||
*/
|
||||
@@ -1223,7 +1223,7 @@ class Image
|
||||
|
||||
/**
|
||||
* Convert gd alpha (0-127) value to rgba alpha value (0-1)
|
||||
*
|
||||
*
|
||||
* @param int $input
|
||||
* @return float
|
||||
*/
|
||||
|
@@ -386,7 +386,7 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$img->flip('h');
|
||||
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||
$this->assertEquals('#ffbf47', $img->pickColor(0, 0, 'hex'));
|
||||
|
||||
|
||||
$img = $this->getTestImage();
|
||||
$img->flip('v');
|
||||
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||
@@ -515,7 +515,7 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 25);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function testPixelateImage()
|
||||
|
Reference in New Issue
Block a user