mirror of
https://github.com/pierre42100/comunic
synced 2025-06-21 17:45:18 +00:00
First commit
This commit is contained in:
58
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Adapter.php
vendored
Normal file
58
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Adapter.php
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Gregwar\Image\Adapter;
|
||||
|
||||
use Gregwar\Image\Source\Source;
|
||||
|
||||
/**
|
||||
* Base Adapter Implementation to handle Image information
|
||||
*/
|
||||
abstract class Adapter implements AdapterInterface
|
||||
{
|
||||
/**
|
||||
* @var Source
|
||||
*/
|
||||
protected $source;
|
||||
|
||||
/**
|
||||
* The image resource handler
|
||||
*/
|
||||
protected $resource;
|
||||
|
||||
public function __construct(){
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setSource(Source $source)
|
||||
{
|
||||
$this->source = $source;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getResource()
|
||||
{
|
||||
return $this->resource;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does this adapter supports the given type ?
|
||||
*/
|
||||
protected function supports($type)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the image to true color
|
||||
*/
|
||||
protected function convertToTrueColor()
|
||||
{
|
||||
}
|
||||
}
|
388
developer/vendor/gregwar/image/Gregwar/Image/Adapter/AdapterInterface.php
vendored
Normal file
388
developer/vendor/gregwar/image/Gregwar/Image/Adapter/AdapterInterface.php
vendored
Normal file
@ -0,0 +1,388 @@
|
||||
<?php
|
||||
|
||||
namespace Gregwar\Image\Adapter;
|
||||
|
||||
use Gregwar\Image\Image;
|
||||
use Gregwar\Image\Source\Source;
|
||||
|
||||
/**
|
||||
* all the functions / methods to work on images
|
||||
*
|
||||
* if changing anything please also add it to \Gregwar\Image\Image
|
||||
*
|
||||
* @author wodka <michael.schramm@gmail.com>
|
||||
*/
|
||||
interface AdapterInterface{
|
||||
/**
|
||||
* set the image source for the adapter
|
||||
*
|
||||
* @param Source $source
|
||||
* @return $this
|
||||
*/
|
||||
public function setSource(Source $source);
|
||||
|
||||
/**
|
||||
* get the raw resource
|
||||
*
|
||||
* @return resource
|
||||
*/
|
||||
public function getResource();
|
||||
|
||||
/**
|
||||
* Gets the name of the adapter
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName();
|
||||
|
||||
/**
|
||||
* Image width
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function width();
|
||||
|
||||
/**
|
||||
* Image height
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function height();
|
||||
|
||||
/**
|
||||
* Init the resource
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function init();
|
||||
|
||||
/**
|
||||
* Save the image as a gif
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function saveGif($file);
|
||||
|
||||
/**
|
||||
* Save the image as a png
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function savePng($file);
|
||||
|
||||
/**
|
||||
* Save the image as a jpeg
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function saveJpeg($file, $quality);
|
||||
|
||||
/**
|
||||
* Works as resize() excepts that the layout will be cropped
|
||||
*
|
||||
* @param int $width the width
|
||||
* @param int $height the height
|
||||
* @param int $background the background
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function cropResize($width = null, $height = null, $background=0xffffff);
|
||||
|
||||
|
||||
/**
|
||||
* Resize the image preserving scale. Can enlarge it.
|
||||
*
|
||||
* @param int $width the width
|
||||
* @param int $height the height
|
||||
* @param int $background the background
|
||||
* @param boolean $crop
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function scaleResize($width = null, $height = null, $background=0xffffff, $crop = false);
|
||||
|
||||
/**
|
||||
* Resizes the image. It will never be enlarged.
|
||||
*
|
||||
* @param int $width the width
|
||||
* @param int $height the height
|
||||
* @param int $background the background
|
||||
* @param boolean $force
|
||||
* @param boolean $rescale
|
||||
* @param boolean $crop
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function resize($width = null, $height = null, $background = 0xffffff, $force = false, $rescale = false, $crop = false);
|
||||
|
||||
/**
|
||||
* Crops the image
|
||||
*
|
||||
* @param int $x the top-left x position of the crop box
|
||||
* @param int $y the top-left y position of the crop box
|
||||
* @param int $width the width of the crop box
|
||||
* @param int $height the height of the crop box
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function crop($x, $y, $width, $height);
|
||||
|
||||
/**
|
||||
* enable progressive image loading
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function enableProgressive();
|
||||
|
||||
/**
|
||||
* Resizes the image forcing the destination to have exactly the
|
||||
* given width and the height
|
||||
*
|
||||
* @param int $width the width
|
||||
* @param int $height the height
|
||||
* @param int $background the background
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function forceResize($width = null, $height = null, $background = 0xffffff);
|
||||
|
||||
/**
|
||||
* Perform a zoom crop of the image to desired width and height
|
||||
*
|
||||
* @param integer $width Desired width
|
||||
* @param integer $height Desired height
|
||||
* @param int $background
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function zoomCrop($width, $height, $background = 0xffffff);
|
||||
|
||||
|
||||
/**
|
||||
* Fills the image background to $bg if the image is transparent
|
||||
*
|
||||
* @param int $background background color
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function fillBackground($background = 0xffffff);
|
||||
|
||||
|
||||
/**
|
||||
* Negates the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function negate();
|
||||
|
||||
/**
|
||||
* Changes the brightness of the image
|
||||
*
|
||||
* @param int $brightness the brightness
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function brightness($brightness);
|
||||
|
||||
/**
|
||||
* Contrasts the image
|
||||
*
|
||||
* @param int $contrast the contrast [-100, 100]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function contrast($contrast);
|
||||
|
||||
/**
|
||||
* Apply a grayscale level effect on the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function grayscale();
|
||||
|
||||
/**
|
||||
* Emboss the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function emboss();
|
||||
|
||||
/**
|
||||
* Smooth the image
|
||||
*
|
||||
* @param int $p value between [-10,10]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function smooth($p);
|
||||
|
||||
/**
|
||||
* Sharps the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function sharp();
|
||||
|
||||
/**
|
||||
* Edges the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function edge();
|
||||
|
||||
/**
|
||||
* Colorize the image
|
||||
*
|
||||
* @param int $red value in range [-255, 255]
|
||||
* @param int $green value in range [-255, 255]
|
||||
* @param int $blue value in range [-255, 255]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function colorize($red, $green, $blue);
|
||||
|
||||
/**
|
||||
* apply sepia to the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function sepia();
|
||||
|
||||
/**
|
||||
* Merge with another image
|
||||
*
|
||||
* @param Image $other
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function merge(Image $other, $x = 0, $y = 0, $width = null, $height = null);
|
||||
|
||||
/**
|
||||
* Rotate the image
|
||||
*
|
||||
* @param float $angle
|
||||
* @param int $background
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function rotate($angle, $background = 0xffffff);
|
||||
|
||||
/**
|
||||
* Fills the image
|
||||
*
|
||||
* @param int $color
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function fill($color = 0xffffff, $x = 0, $y = 0);
|
||||
|
||||
/**
|
||||
* write text to the image
|
||||
*
|
||||
* @param string $font
|
||||
* @param string $text
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @param int $size
|
||||
* @param int $angle
|
||||
* @param int $color
|
||||
* @param string $align
|
||||
*/
|
||||
public function write($font, $text, $x = 0, $y = 0, $size = 12, $angle = 0, $color = 0x000000, $align = 'left');
|
||||
|
||||
/**
|
||||
* Draws a rectangle
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function rectangle($x1, $y1, $x2, $y2, $color, $filled = false);
|
||||
|
||||
/**
|
||||
* Draws a rounded rectangle
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $radius
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function roundedRectangle($x1, $y1, $x2, $y2, $radius, $color, $filled = false);
|
||||
|
||||
/**
|
||||
* Draws a line
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $color
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function line($x1, $y1, $x2, $y2, $color = 0x000000);
|
||||
|
||||
/**
|
||||
* Draws an ellipse
|
||||
*
|
||||
* @param int $cx
|
||||
* @param int $cy
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function ellipse($cx, $cy, $width, $height, $color = 0x000000, $filled = false);
|
||||
|
||||
/**
|
||||
* Draws a circle
|
||||
*
|
||||
* @param int $cx
|
||||
* @param int $cy
|
||||
* @param int $r
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function circle($cx, $cy, $r, $color = 0x000000, $filled = false);
|
||||
|
||||
/**
|
||||
* Draws a polygon
|
||||
*
|
||||
* @param array $points
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function polygon(array $points, $color, $filled = false);
|
||||
|
||||
/**
|
||||
* Flips the image
|
||||
*
|
||||
* @param int $flipVertical
|
||||
* @param int $flipHorizontal
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function flip($flipVertical, $flipHorizontal);
|
||||
}
|
351
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Common.php
vendored
Normal file
351
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Common.php
vendored
Normal file
@ -0,0 +1,351 @@
|
||||
<?php
|
||||
|
||||
namespace Gregwar\Image\Adapter;
|
||||
|
||||
abstract class Common extends Adapter
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function zoomCrop($width, $height, $background = 'transparent', $xPosLetter = 'center', $yPosLetter = 'center')
|
||||
{
|
||||
// Calculate the different ratios
|
||||
$originalRatio = $this->width() / $this->height();
|
||||
$newRatio = $width / $height;
|
||||
|
||||
// Compare ratios
|
||||
if ($originalRatio > $newRatio) {
|
||||
// Original image is wider
|
||||
$newHeight = $height;
|
||||
$newWidth = (int) $height * $originalRatio;
|
||||
} else {
|
||||
// Equal width or smaller
|
||||
$newHeight = (int) $width / $originalRatio;
|
||||
$newWidth = $width;
|
||||
}
|
||||
|
||||
// Perform resize
|
||||
$this->resize($newWidth, $newHeight, $background, true);
|
||||
|
||||
// Define x position
|
||||
switch($xPosLetter) {
|
||||
case 'L':
|
||||
case 'left':
|
||||
$xPos = 0;
|
||||
break;
|
||||
case 'R':
|
||||
case 'right':
|
||||
$xPos = (int) $newWidth - $width;
|
||||
break;
|
||||
default:
|
||||
$xPos = (int) ($newWidth - $width) / 2;
|
||||
}
|
||||
|
||||
// Define y position
|
||||
switch($yPosLetter) {
|
||||
case 'T':
|
||||
case 'top':
|
||||
$yPos = 0;
|
||||
break;
|
||||
case 'B':
|
||||
case 'bottom':
|
||||
$yPos = (int) $newHeight - $height;
|
||||
break;
|
||||
default:
|
||||
$yPos = (int) ($newHeight - $height) / 2;
|
||||
}
|
||||
|
||||
// Crop image to reach desired size
|
||||
$this->crop($xPos, $yPos, $width, $height);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resizes the image forcing the destination to have exactly the
|
||||
* given width and the height
|
||||
*
|
||||
* @param int $w the width
|
||||
* @param int $h the height
|
||||
* @param int $bg the background
|
||||
*/
|
||||
public function forceResize($width = null, $height = null, $background = 'transparent')
|
||||
{
|
||||
return $this->resize($width, $height, $background, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function scaleResize($width = null, $height = null, $background='transparent', $crop = false)
|
||||
{
|
||||
return $this->resize($width, $height, $background, false, true, $crop);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function cropResize($width = null, $height = null, $background='transparent')
|
||||
{
|
||||
return $this->resize($width, $height, $background, false, false, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix orientation using Exif informations
|
||||
*/
|
||||
public function fixOrientation()
|
||||
{
|
||||
if (!extension_loaded('exif')) {
|
||||
throw new \RuntimeException('You need to EXIF PHP Extension to use this function');
|
||||
}
|
||||
|
||||
$exif = exif_read_data($this->source->getInfos());
|
||||
|
||||
if(!array_key_exists('Orientation', $exif)) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
switch($exif['Orientation']) {
|
||||
case 1:
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$this->flip(false, true);
|
||||
break;
|
||||
|
||||
case 3: // 180 rotate left
|
||||
$this->rotate(180);
|
||||
break;
|
||||
|
||||
case 4: // vertical flip
|
||||
$this->flip(true, false);
|
||||
break;
|
||||
|
||||
case 5: // vertical flip + 90 rotate right
|
||||
$this->flip(true, false);
|
||||
$this->rotate(-90);
|
||||
break;
|
||||
|
||||
case 6: // 90 rotate right
|
||||
$this->rotate(-90);
|
||||
break;
|
||||
|
||||
case 7: // horizontal flip + 90 rotate right
|
||||
$this->flip(false, true);
|
||||
$this->rotate(-90);
|
||||
break;
|
||||
|
||||
case 8: // 90 rotate left
|
||||
$this->rotate(90);
|
||||
break;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the image
|
||||
*/
|
||||
abstract protected function openGif($file);
|
||||
abstract protected function openJpeg($file);
|
||||
abstract protected function openPng($file);
|
||||
|
||||
/**
|
||||
* Creates an image
|
||||
*/
|
||||
abstract protected function createImage($width, $height);
|
||||
|
||||
/**
|
||||
* Creating an image using $data
|
||||
*/
|
||||
abstract protected function createImageFromData($data);
|
||||
|
||||
/**
|
||||
* Loading image from $resource
|
||||
*/
|
||||
protected function loadResource($resource)
|
||||
{
|
||||
$this->resource = $resource;
|
||||
}
|
||||
|
||||
protected function loadFile($file, $type)
|
||||
{
|
||||
if (!$this->supports($type)) {
|
||||
throw new \RuntimeException('Type '.$type.' is not supported by GD');
|
||||
}
|
||||
|
||||
if ($type == 'jpeg') {
|
||||
$this->openJpeg($file);
|
||||
}
|
||||
|
||||
if ($type == 'gif') {
|
||||
$this->openGif($file);
|
||||
}
|
||||
|
||||
if ($type == 'png') {
|
||||
$this->openPng($file);
|
||||
}
|
||||
|
||||
if (false === $this->resource) {
|
||||
throw new \UnexpectedValueException('Unable to open file ('.$file.')');
|
||||
} else {
|
||||
$this->convertToTrueColor();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$source = $this->source;
|
||||
|
||||
if ($source instanceof \Gregwar\Image\Source\File) {
|
||||
$this->loadFile($source->getFile(), $source->guessType());
|
||||
} else if ($source instanceof \Gregwar\Image\Source\Create) {
|
||||
$this->createImage($source->getWidth(), $source->getHeight());
|
||||
} else if ($source instanceof \Gregwar\Image\Source\Data) {
|
||||
$this->createImageFromData($source->getData());
|
||||
} else if ($source instanceof \Gregwar\Image\Source\Resource) {
|
||||
$this->loadResource($source->getResource());
|
||||
} else {
|
||||
throw new \Exception('Unsupported image source type '.get_class($source));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function resize($width = null, $height = null, $background = 'transparent', $force = false, $rescale = false, $crop = false)
|
||||
{
|
||||
$current_width = $this->width();
|
||||
$current_height = $this->height();
|
||||
$new_width = 0;
|
||||
$new_height = 0;
|
||||
$scale = 1.0;
|
||||
|
||||
if ($height === null && preg_match('#^(.+)%$#mUsi', $width, $matches)) {
|
||||
$width = round($current_width * ((float)$matches[1]/100.0));
|
||||
$height = round($current_height * ((float)$matches[1]/100.0));
|
||||
}
|
||||
|
||||
if (!$rescale && (!$force || $crop)) {
|
||||
if ($width!=null && $current_width>$width) {
|
||||
$scale = $current_width/$width;
|
||||
}
|
||||
|
||||
if ($height!=null && $current_height>$height) {
|
||||
if ($current_height/$height > $scale)
|
||||
$scale = $current_height/$height;
|
||||
}
|
||||
} else {
|
||||
if ($width!=null) {
|
||||
$scale = $current_width/$width;
|
||||
$new_width = $width;
|
||||
}
|
||||
|
||||
if ($height!=null) {
|
||||
if ($width!=null && $rescale) {
|
||||
$scale = max($scale,$current_height/$height);
|
||||
} else {
|
||||
$scale = $current_height/$height;
|
||||
}
|
||||
$new_height = $height;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$force || $width==null || $rescale) {
|
||||
$new_width = round($current_width/$scale);
|
||||
}
|
||||
|
||||
if (!$force || $height==null || $rescale) {
|
||||
$new_height = round($current_height/$scale);
|
||||
}
|
||||
|
||||
if ($width == null || $crop) {
|
||||
$width = $new_width;
|
||||
}
|
||||
|
||||
if ($height == null || $crop) {
|
||||
$height = $new_height;
|
||||
}
|
||||
|
||||
$this->doResize($background, $width, $height, $new_width, $new_height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trim background color arround the image
|
||||
*
|
||||
* @param int $bg the background
|
||||
*/
|
||||
protected function _trimColor($background='transparent')
|
||||
{
|
||||
$width = $this->width();
|
||||
$height = $this->height();
|
||||
|
||||
$b_top = 0;
|
||||
$b_lft = 0;
|
||||
$b_btm = $height - 1;
|
||||
$b_rt = $width - 1;
|
||||
|
||||
//top
|
||||
for(; $b_top < $height; ++$b_top) {
|
||||
for($x = 0; $x < $width; ++$x) {
|
||||
if ($this->getColor($x, $b_top) != $background) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// bottom
|
||||
for(; $b_btm >= 0; --$b_btm) {
|
||||
for($x = 0; $x < $width; ++$x) {
|
||||
if ($this->getColor($x, $b_btm) != $background) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// left
|
||||
for(; $b_lft < $width; ++$b_lft) {
|
||||
for($y = $b_top; $y <= $b_btm; ++$y) {
|
||||
if ($this->getColor($b_lft, $y) != $background) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// right
|
||||
for(; $b_rt >= 0; --$b_rt) {
|
||||
for($y = $b_top; $y <= $b_btm; ++$y) {
|
||||
if ($this->getColor($b_rt, $y) != $background) {
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$b_btm++;
|
||||
$b_rt++;
|
||||
|
||||
$this->crop($b_lft, $b_top, $b_rt - $b_lft, $b_btm - $b_top);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resizes the image to an image having size of $target_width, $target_height, using
|
||||
* $new_width and $new_height and padding with $bg color
|
||||
*/
|
||||
abstract protected function doResize($bg, $target_width, $target_height, $new_width, $new_height);
|
||||
|
||||
/**
|
||||
* Gets the color of the $x, $y pixel
|
||||
*/
|
||||
abstract protected function getColor($x, $y);
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function enableProgressive(){
|
||||
throw new \Exception('The Adapter '.$this->getName().' does not support Progressive Image loading');
|
||||
}
|
||||
}
|
567
developer/vendor/gregwar/image/Gregwar/Image/Adapter/GD.php
vendored
Normal file
567
developer/vendor/gregwar/image/Gregwar/Image/Adapter/GD.php
vendored
Normal file
@ -0,0 +1,567 @@
|
||||
<?php
|
||||
|
||||
namespace Gregwar\Image\Adapter;
|
||||
|
||||
use Gregwar\Image\ImageColor;
|
||||
use Gregwar\Image\Image;
|
||||
|
||||
class GD extends Common
|
||||
{
|
||||
public static $gdTypes = array(
|
||||
'jpeg' => \IMG_JPG,
|
||||
'gif' => \IMG_GIF,
|
||||
'png' => \IMG_PNG,
|
||||
);
|
||||
|
||||
protected function loadResource($resource)
|
||||
{
|
||||
parent::loadResource($resource);
|
||||
imagesavealpha($this->resource, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the width and the height for writing some text
|
||||
*/
|
||||
public static function TTFBox($font, $text, $size, $angle = 0)
|
||||
{
|
||||
$box = imagettfbbox($size, $angle, $font, $text);
|
||||
|
||||
return array(
|
||||
'width' => abs($box[2] - $box[0]),
|
||||
'height' => abs($box[3] - $box[5])
|
||||
);
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if (!(extension_loaded('gd') && function_exists('gd_info'))) {
|
||||
throw new \RuntimeException('You need to install GD PHP Extension to use this library');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'GD';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function fillBackground($background = 0xffffff)
|
||||
{
|
||||
$w = $this->width();
|
||||
$h = $this->height();
|
||||
$n = imagecreatetruecolor($w, $h);
|
||||
imagefill($n, 0, 0, ImageColor::gdAllocate($this->resource, $background));
|
||||
imagecopyresampled($n, $this->resource, 0, 0, 0, 0, $w, $h, $w, $h);
|
||||
imagedestroy($this->resource);
|
||||
$this->resource = $n;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Do the image resize
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
protected function doResize($bg, $target_width, $target_height, $new_width, $new_height)
|
||||
{
|
||||
$width = $this->width();
|
||||
$height = $this->height();
|
||||
$n = imagecreatetruecolor($target_width, $target_height);
|
||||
|
||||
if ($bg != 'transparent') {
|
||||
imagefill($n, 0, 0, ImageColor::gdAllocate($this->resource, $bg));
|
||||
} else {
|
||||
imagealphablending($n, false);
|
||||
$color = ImageColor::gdAllocate($this->resource, 'transparent');
|
||||
|
||||
imagefill($n, 0, 0, $color);
|
||||
imagesavealpha($n, true);
|
||||
}
|
||||
|
||||
imagecopyresampled($n, $this->resource, ($target_width-$new_width)/2, ($target_height-$new_height)/2, 0, 0, $new_width, $new_height, $width, $height);
|
||||
imagedestroy($this->resource);
|
||||
|
||||
$this->resource = $n;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function crop($x, $y, $width, $height)
|
||||
{
|
||||
$destination = imagecreatetruecolor($width, $height);
|
||||
imagealphablending($destination, false);
|
||||
imagesavealpha($destination, true);
|
||||
imagecopy($destination, $this->resource, 0, 0, $x, $y, $this->width(), $this->height());
|
||||
imagedestroy($this->resource);
|
||||
$this->resource = $destination;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function negate()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_NEGATE);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function brightness($brightness)
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_BRIGHTNESS, $brightness);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function contrast($contrast)
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_CONTRAST, $contrast);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function grayscale()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_GRAYSCALE);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function emboss()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_EMBOSS);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function smooth($p)
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_SMOOTH, $p);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function sharp()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_MEAN_REMOVAL);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function edge()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_EDGEDETECT);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function colorize($red, $green, $blue)
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_COLORIZE, $red, $green, $blue);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function sepia()
|
||||
{
|
||||
imagefilter($this->resource, IMG_FILTER_GRAYSCALE);
|
||||
imagefilter($this->resource, IMG_FILTER_COLORIZE, 100, 50, 0);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function merge(Image $other, $x = 0, $y = 0, $width = null, $height = null)
|
||||
{
|
||||
$other = clone $other;
|
||||
$other->init();
|
||||
$other->applyOperations();
|
||||
|
||||
imagealphablending($this->resource, true);
|
||||
|
||||
if (null == $width) {
|
||||
$width = $other->width();
|
||||
}
|
||||
|
||||
if (null == $height) {
|
||||
$height = $other->height();
|
||||
}
|
||||
|
||||
imagecopyresampled($this->resource, $other->getAdapter()->getResource(), $x, $y, 0, 0, $width, $height, $width, $height);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rotate($angle, $background = 0xffffff)
|
||||
{
|
||||
$this->resource = imagerotate($this->resource, $angle, ImageColor::gdAllocate($this->resource, $background));
|
||||
imagealphablending($this->resource, true);
|
||||
imagesavealpha($this->resource, true);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function fill($color = 0xffffff, $x = 0, $y = 0)
|
||||
{
|
||||
imagealphablending($this->resource, false);
|
||||
imagefill($this->resource, $x, $y, ImageColor::gdAllocate($this->resource, $color));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function write($font, $text, $x = 0, $y = 0, $size = 12, $angle = 0, $color = 0x000000, $align = 'left')
|
||||
{
|
||||
imagealphablending($this->resource, true);
|
||||
|
||||
if ($align != 'left') {
|
||||
$sim_size = self::TTFBox($font, $text, $size, $angle);
|
||||
|
||||
if ($align == 'center') {
|
||||
$x -= $sim_size['width'] / 2;
|
||||
}
|
||||
|
||||
if ($align == 'right') {
|
||||
$x -= $sim_size['width'];
|
||||
}
|
||||
}
|
||||
|
||||
imagettftext($this->resource, $size, $angle, $x, $y, ImageColor::gdAllocate($this->resource, $color), $font, $text);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rectangle($x1, $y1, $x2, $y2, $color, $filled = false)
|
||||
{
|
||||
if ($filled) {
|
||||
imagefilledrectangle($this->resource, $x1, $y1, $x2, $y2, ImageColor::gdAllocate($this->resource, $color));
|
||||
} else {
|
||||
imagerectangle($this->resource, $x1, $y1, $x2, $y2, ImageColor::gdAllocate($this->resource, $color));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function roundedRectangle($x1, $y1, $x2, $y2, $radius, $color, $filled = false) {
|
||||
if ($color) {
|
||||
$color = ImageColor::gdAllocate($this->resource, $color);
|
||||
}
|
||||
|
||||
if ($filled == true) {
|
||||
imagefilledrectangle($this->resource, $x1+$radius, $y1, $x2-$radius, $y2, $color);
|
||||
imagefilledrectangle($this->resource, $x1, $y1+$radius, $x1+$radius-1, $y2-$radius, $color);
|
||||
imagefilledrectangle($this->resource, $x2-$radius+1, $y1+$radius, $x2, $y2-$radius, $color);
|
||||
|
||||
imagefilledarc($this->resource,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color, IMG_ARC_PIE);
|
||||
imagefilledarc($this->resource,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color, IMG_ARC_PIE);
|
||||
imagefilledarc($this->resource,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color, IMG_ARC_PIE);
|
||||
imagefilledarc($this->resource,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color, IMG_ARC_PIE);
|
||||
} else {
|
||||
imageline($this->resource, $x1+$radius, $y1, $x2-$radius, $y1, $color);
|
||||
imageline($this->resource, $x1+$radius, $y2, $x2-$radius, $y2, $color);
|
||||
imageline($this->resource, $x1, $y1+$radius, $x1, $y2-$radius, $color);
|
||||
imageline($this->resource, $x2, $y1+$radius, $x2, $y2-$radius, $color);
|
||||
|
||||
imagearc($this->resource,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color);
|
||||
imagearc($this->resource,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color);
|
||||
imagearc($this->resource,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color);
|
||||
imagearc($this->resource,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function line($x1, $y1, $x2, $y2, $color = 0x000000)
|
||||
{
|
||||
imageline($this->resource, $x1, $y1, $x2, $y2, ImageColor::gdAllocate($this->resource, $color));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function ellipse($cx, $cy, $width, $height, $color = 0x000000, $filled = false)
|
||||
{
|
||||
if ($filled) {
|
||||
imagefilledellipse($this->resource, $cx, $cy, $width, $height, ImageColor::gdAllocate($this->resource, $color));
|
||||
} else {
|
||||
imageellipse($this->resource, $cx, $cy, $width, $height, ImageColor::gdAllocate($this->resource, $color));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function circle($cx, $cy, $r, $color = 0x000000, $filled = false)
|
||||
{
|
||||
return $this->ellipse($cx, $cy, $r, $r, ImageColor::gdAllocate($this->resource, $color), $filled);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function polygon(array $points, $color, $filled = false)
|
||||
{
|
||||
if ($filled) {
|
||||
imagefilledpolygon($this->resource, $points, count($points)/2, ImageColor::gdAllocate($this->resource, $color));
|
||||
} else {
|
||||
imagepolygon($this->resource, $points, count($points)/2, ImageColor::gdAllocate($this->resource, $color));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function flip($flipVertical, $flipHorizontal) {
|
||||
|
||||
if (!$flipVertical && !$flipHorizontal) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (function_exists('imageflip')) {
|
||||
if ($flipVertical && $flipHorizontal) {
|
||||
$flipMode = \IMG_FLIP_BOTH;
|
||||
} else if ($flipVertical && !$flipHorizontal) {
|
||||
$flipMode = \IMG_FLIP_VERTICAL;
|
||||
} else if (!$flipVertical && $flipHorizontal) {
|
||||
$flipMode = \IMG_FLIP_HORIZONTAL;
|
||||
}
|
||||
|
||||
imageflip($this->resource, $flipMode);
|
||||
} else {
|
||||
$width = $this->width();
|
||||
$height = $this->height();
|
||||
|
||||
$src_x = 0;
|
||||
$src_y = 0;
|
||||
$src_width = $width;
|
||||
$src_height = $height;
|
||||
|
||||
if ($flipVertical) {
|
||||
$src_y = $height -1;
|
||||
$src_height = -$height;
|
||||
}
|
||||
|
||||
if ($flipHorizontal) {
|
||||
$src_x = $width -1;
|
||||
$src_width = -$width;
|
||||
}
|
||||
|
||||
$imgdest = imagecreatetruecolor ($width, $height);
|
||||
imagealphablending($imgdest, false);
|
||||
imagesavealpha($imgdest, true);
|
||||
|
||||
if (imagecopyresampled($imgdest, $this->resource, 0, 0, $src_x, $src_y , $width, $height, $src_width, $src_height)) {
|
||||
imagedestroy($this->resource);
|
||||
$this->resource = $imgdest;
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function width()
|
||||
{
|
||||
if (null === $this->resource) {
|
||||
$this->init();
|
||||
}
|
||||
|
||||
return imagesx($this->resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function height()
|
||||
{
|
||||
if (null === $this->resource) {
|
||||
$this->init();
|
||||
}
|
||||
|
||||
return imagesy($this->resource);
|
||||
}
|
||||
|
||||
protected function createImage($width, $height)
|
||||
{
|
||||
$this->resource = imagecreatetruecolor($width, $height);
|
||||
}
|
||||
|
||||
protected function createImageFromData($data)
|
||||
{
|
||||
$this->resource = @imagecreatefromstring($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the image to true color
|
||||
*/
|
||||
protected function convertToTrueColor()
|
||||
{
|
||||
if (!imageistruecolor($this->resource)) {
|
||||
if (function_exists('imagepalettetotruecolor')) {
|
||||
// Available in PHP 5.5
|
||||
imagepalettetotruecolor($this->resource);
|
||||
} else {
|
||||
$transparentIndex = imagecolortransparent($this->resource);
|
||||
|
||||
$w = $this->width();
|
||||
$h = $this->height();
|
||||
|
||||
$img = imagecreatetruecolor($w, $h);
|
||||
imagecopy($img, $this->resource, 0, 0, 0, 0, $w, $h);
|
||||
|
||||
if ($transparentIndex != -1) {
|
||||
$width = $this->width();
|
||||
$height = $this->height();
|
||||
|
||||
imagealphablending($img, false);
|
||||
imagesavealpha($img, true);
|
||||
|
||||
for ($x=0; $x<$width; $x++) {
|
||||
for ($y=0; $y<$height; $y++) {
|
||||
if (imagecolorat($this->resource, $x, $y) == $transparentIndex) {
|
||||
imagesetpixel($img, $x, $y, 127 << 24);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->resource = $img;
|
||||
}
|
||||
}
|
||||
|
||||
imagesavealpha($this->resource, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function saveGif($file)
|
||||
{
|
||||
$transColor = imagecolorallocatealpha($this->resource, 255, 255, 255, 127);
|
||||
imagecolortransparent($this->resource, $transColor);
|
||||
imagegif($this->resource, $file);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function savePng($file)
|
||||
{
|
||||
imagepng($this->resource, $file);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function saveJpeg($file, $quality)
|
||||
{
|
||||
imagejpeg($this->resource, $file, $quality);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to open the file using jpeg
|
||||
*
|
||||
*/
|
||||
protected function openJpeg($file)
|
||||
{
|
||||
$this->resource = @imagecreatefromjpeg($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to open the file using gif
|
||||
*/
|
||||
protected function openGif($file)
|
||||
{
|
||||
$this->resource = @imagecreatefromgif($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to open the file using PNG
|
||||
*/
|
||||
protected function openPng($file)
|
||||
{
|
||||
$this->resource = @imagecreatefrompng($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Does this adapter supports type ?
|
||||
*/
|
||||
protected function supports($type)
|
||||
{
|
||||
return (imagetypes() & self::$gdTypes[$type]);
|
||||
}
|
||||
|
||||
protected function getColor($x, $y)
|
||||
{
|
||||
return imagecolorat($this->resource, $x, $y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function enableProgressive(){
|
||||
imageinterlace($this->resource, 1);
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
389
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Imagick.php
vendored
Normal file
389
developer/vendor/gregwar/image/Gregwar/Image/Adapter/Imagick.php
vendored
Normal file
@ -0,0 +1,389 @@
|
||||
<?php
|
||||
|
||||
namespace Gregwar\Image\Adapter;
|
||||
|
||||
use Gregwar\Image\Image;
|
||||
|
||||
class Imagick extends Common{
|
||||
public function __construct(){
|
||||
throw new \Exception('Imagick is not supported right now');
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the adapter
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName(){
|
||||
return 'ImageMagick';
|
||||
}
|
||||
|
||||
/**
|
||||
* Image width
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function width(){
|
||||
// TODO: Implement width() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Image height
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function height(){
|
||||
// TODO: Implement height() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the image as a gif
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function saveGif($file){
|
||||
// TODO: Implement saveGif() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the image as a png
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function savePng($file){
|
||||
// TODO: Implement savePng() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the image as a jpeg
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function saveJpeg($file, $quality){
|
||||
// TODO: Implement saveJpeg() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Crops the image
|
||||
*
|
||||
* @param int $x the top-left x position of the crop box
|
||||
* @param int $y the top-left y position of the crop box
|
||||
* @param int $width the width of the crop box
|
||||
* @param int $height the height of the crop box
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function crop($x, $y, $width, $height){
|
||||
// TODO: Implement crop() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills the image background to $bg if the image is transparent
|
||||
*
|
||||
* @param int $background background color
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function fillBackground($background = 0xffffff){
|
||||
// TODO: Implement fillBackground() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Negates the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function negate(){
|
||||
// TODO: Implement negate() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the brightness of the image
|
||||
*
|
||||
* @param int $brightness the brightness
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function brightness($brightness){
|
||||
// TODO: Implement brightness() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Contrasts the image
|
||||
*
|
||||
* @param int $contrast the contrast [-100, 100]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function contrast($contrast){
|
||||
// TODO: Implement contrast() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply a grayscale level effect on the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function grayscale(){
|
||||
// TODO: Implement grayscale() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Emboss the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function emboss(){
|
||||
// TODO: Implement emboss() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Smooth the image
|
||||
*
|
||||
* @param int $p value between [-10,10]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function smooth($p){
|
||||
// TODO: Implement smooth() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Sharps the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function sharp(){
|
||||
// TODO: Implement sharp() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Edges the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function edge(){
|
||||
// TODO: Implement edge() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Colorize the image
|
||||
*
|
||||
* @param int $red value in range [-255, 255]
|
||||
* @param int $green value in range [-255, 255]
|
||||
* @param int $blue value in range [-255, 255]
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function colorize($red, $green, $blue){
|
||||
// TODO: Implement colorize() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* apply sepia to the image
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function sepia(){
|
||||
// TODO: Implement sepia() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge with another image
|
||||
*
|
||||
* @param Image $other
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function merge(Image $other, $x = 0, $y = 0, $width = null, $height = null){
|
||||
// TODO: Implement merge() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate the image
|
||||
*
|
||||
* @param float $angle
|
||||
* @param int $background
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function rotate($angle, $background = 0xffffff){
|
||||
// TODO: Implement rotate() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills the image
|
||||
*
|
||||
* @param int $color
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function fill($color = 0xffffff, $x = 0, $y = 0){
|
||||
// TODO: Implement fill() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* write text to the image
|
||||
*
|
||||
* @param string $font
|
||||
* @param string $text
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @param int $size
|
||||
* @param int $angle
|
||||
* @param int $color
|
||||
* @param string $align
|
||||
*/
|
||||
public function write($font, $text, $x = 0, $y = 0, $size = 12, $angle = 0, $color = 0x000000, $align = 'left'){
|
||||
// TODO: Implement write() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a rectangle
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function rectangle($x1, $y1, $x2, $y2, $color, $filled = false){
|
||||
// TODO: Implement rectangle() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a rounded rectangle
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $radius
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function roundedRectangle($x1, $y1, $x2, $y2, $radius, $color, $filled = false){
|
||||
// TODO: Implement roundedRectangle() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a line
|
||||
*
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
* @param int $color
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function line($x1, $y1, $x2, $y2, $color = 0x000000){
|
||||
// TODO: Implement line() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws an ellipse
|
||||
*
|
||||
* @param int $cx
|
||||
* @param int $cy
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function ellipse($cx, $cy, $width, $height, $color = 0x000000, $filled = false){
|
||||
// TODO: Implement ellipse() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a circle
|
||||
*
|
||||
* @param int $cx
|
||||
* @param int $cy
|
||||
* @param int $r
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function circle($cx, $cy, $r, $color = 0x000000, $filled = false){
|
||||
// TODO: Implement circle() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a polygon
|
||||
*
|
||||
* @param array $points
|
||||
* @param int $color
|
||||
* @param bool $filled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function polygon(array $points, $color, $filled = false){
|
||||
// TODO: Implement polygon() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function flip($flipVertical, $flipHorizontal) {
|
||||
// TODO: Implement flip method
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the image
|
||||
*/
|
||||
protected function openGif($file){
|
||||
// TODO: Implement openGif() method.
|
||||
}
|
||||
|
||||
protected function openJpeg($file){
|
||||
// TODO: Implement openJpeg() method.
|
||||
}
|
||||
|
||||
protected function openPng($file){
|
||||
// TODO: Implement openPng() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an image
|
||||
*/
|
||||
protected function createImage($width, $height){
|
||||
// TODO: Implement createImage() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Creating an image using $data
|
||||
*/
|
||||
protected function createImageFromData($data){
|
||||
// TODO: Implement createImageFromData() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Resizes the image to an image having size of $target_width, $target_height, using
|
||||
* $new_width and $new_height and padding with $bg color
|
||||
*/
|
||||
protected function doResize($bg, $target_width, $target_height, $new_width, $new_height){
|
||||
// TODO: Implement doResize() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the color of the $x, $y pixel
|
||||
*/
|
||||
protected function getColor($x, $y){
|
||||
// TODO: Implement getColor() method.
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user