[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/vendor/splitbrain/slika/src/ -> Adapter.php (source)

   1  <?php
   2  
   3  
   4  namespace splitbrain\slika;
   5  
   6  /**
   7   * Base class for image adapters. Defines what image processing adapters need to provide
   8   */
   9  abstract class Adapter
  10  {
  11      /** @var string path to the image */
  12      protected $imagepath;
  13  
  14      /** @var array Adapter Options */
  15      protected $options;
  16  
  17      /**
  18       * New Slika Adapter
  19       *
  20       * @param string $imagepath path to the original image
  21       * @param array $options set options
  22       * @throws Exception
  23       */
  24      public function __construct($imagepath, $options = [])
  25      {
  26          if (!file_exists($imagepath)) {
  27              throw new Exception('image file does not exist');
  28          }
  29  
  30          if (!is_readable($imagepath)) {
  31              throw new Exception('image file is not readable');
  32          }
  33  
  34          $this->imagepath = $imagepath;
  35          $this->options = array_merge(Slika::DEFAULT_OPTIONS, $options);
  36      }
  37  
  38      /**
  39       * Rote the image based on the rotation exif tag
  40       *
  41       * @return Adapter
  42       */
  43      abstract public function autorotate();
  44  
  45      /**
  46       * Rotate and/or flip the image
  47       *
  48       * This expects an orientation flag as stored in EXIF data. For typical operations,
  49       * Slika::ROTATE_* constants are defined.
  50       *
  51       * @param int $orientation Exif rotation flags
  52       * @return Adapter
  53       * @see https://stackoverflow.com/a/53697440 for info on the rotation constants
  54       */
  55      abstract public function rotate($orientation);
  56  
  57      /**
  58       * Resize to make image fit the given dimension (maintaining the aspect ratio)
  59       *
  60       * You may omit one of the dimensions to auto calculate it based on the aspect ratio
  61       *
  62       * @param int|string $width in pixels or %
  63       * @param int|string $height in pixels or %
  64       * @return Adapter
  65       */
  66      abstract public function resize($width, $height);
  67  
  68  
  69      /**
  70       * Resize to the given dimension, cropping the image as needed
  71       *
  72       * You may omit one of the dimensions to use a square area
  73       *
  74       * @param int|string $width in pixels or %
  75       * @param int|string $height in pixels or %
  76       * @return Adapter
  77       */
  78      abstract public function crop($width, $height);
  79  
  80      /**
  81       * Save the new file
  82       *
  83       * @param string $path
  84       * @param string $extension The type of image to save, empty for original
  85       * @return void
  86       */
  87      abstract public function save($path, $extension = '');
  88  
  89  }