Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

FastImageSize.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 4.83 KiB


001  <?php
002   
003  /**
004   * fast-image-size base class
005   * @package fast-image-size
006   * @copyright (c) Marc Alexander <admin@m-a-styles.de>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace FastImageSize;
013   
014  class FastImageSize
015  {
016      /** @var array Size info that is returned */
017      protected $size = array();
018   
019      /** @var string Data retrieved from remote */
020      protected $data = '';
021   
022      /** @var array List of supported image types and associated image types */
023      protected $supportedTypes = array(
024          'png'    => array('png'),
025          'gif'    => array('gif'),
026          'jpeg'    => array(
027                  'jpeg',
028                  'jpg',
029                  'jpe',
030                  'jif',
031                  'jfif',
032                  'jfi',
033              ),
034          'jp2'    => array(
035                  'jp2',
036                  'j2k',
037                  'jpf',
038                  'jpg2',
039                  'jpx',
040                  'jpm',
041              ),
042          'psd'    => array(
043                  'psd',
044                  'photoshop',
045              ),
046          'bmp'    => array('bmp'),
047          'tif'    => array(
048                  'tif',
049                  'tiff',
050              ),
051          'wbmp'    => array(
052                  'wbm',
053                  'wbmp',
054                  'vnd.wap.wbmp',
055              ),
056          'iff'    => array(
057                  'iff',
058                  'x-iff',
059          ),
060          'ico'    => array(
061                  'ico',
062                  'vnd.microsoft.icon',
063                  'x-icon',
064                  'icon',
065          ),
066      );
067   
068      /** @var array Class map that links image extensions/mime types to class */
069      protected $classMap;
070   
071      /** @var array An array containing the classes of supported image types */
072      protected $type;
073   
074      /**
075       * Constructor for fastImageSize class
076       */
077      public function __construct()
078      {
079          foreach ($this->supportedTypes as $imageType => $extension)
080          {
081              $className = '\FastImageSize\Type\Type' . mb_convert_case(mb_strtolower($imageType), MB_CASE_TITLE);
082              $this->type[$imageType] = new $className($this);
083   
084              // Create class map
085              foreach ($extension as $ext)
086              {
087                  /** @var Type\TypeInterface */
088                  $this->classMap[$ext] = $this->type[$imageType];
089              }
090          }
091      }
092   
093      /**
094       * Get image dimensions of supplied image
095       *
096       * @param string $file Path to image that should be checked
097       * @param string $type Mimetype of image
098       * @return array|bool Array with image dimensions if successful, false if not
099       */
100      public function getImageSize($file, $type = '')
101      {
102          // Reset values
103          $this->resetValues();
104   
105          // Treat image type as unknown if extension or mime type is unknown
106          if (!preg_match('/\.([a-z0-9]+)$/i', $file, $match) && empty($type))
107          {
108              $this->getImagesizeUnknownType($file);
109          }
110          else
111          {
112              $extension = (isset($match[1])) ? $match[1] : preg_replace('/.+\/([a-z0-9-.]+)$/i', '$1', $type);
113   
114              $this->getImageSizeByExtension($file, $extension);
115          }
116   
117          return sizeof($this->size) > 1 ? $this->size : false;
118      }
119   
120      /**
121       * Get dimensions of image if type is unknown
122       *
123       * @param string $filename Path to file
124       */
125      protected function getImagesizeUnknownType($filename)
126      {
127          // Grab the maximum amount of bytes we might need
128          $data = $this->getImage($filename, 0, Type\TypeJpeg::JPEG_MAX_HEADER_SIZE, false);
129   
130          if ($data !== false)
131          {
132              foreach ($this->type as $imageType)
133              {
134                  $imageType->getSize($filename);
135   
136                  if (sizeof($this->size) > 1)
137                  {
138                      break;
139                  }
140              }
141          }
142      }
143   
144      /**
145       * Get image size by file extension
146       *
147       * @param string $file Path to image that should be checked
148       * @param string $extension Extension/type of image
149       */
150      protected function getImageSizeByExtension($file, $extension)
151      {
152          $extension = strtolower($extension);
153          if (isset($this->classMap[$extension]))
154          {
155              $this->classMap[$extension]->getSize($file);
156          }
157      }
158   
159      /**
160       * Reset values to default
161       */
162      protected function resetValues()
163      {
164          $this->size = array();
165          $this->data = '';
166      }
167   
168      /**
169       * Set mime type based on supplied image
170       *
171       * @param int $type Type of image
172       */
173      public function setImageType($type)
174      {
175          $this->size['type'] = $type;
176      }
177   
178      /**
179       * Set size info
180       *
181       * @param array $size Array containing size info for image
182       */
183      public function setSize($size)
184      {
185          $this->size = $size;
186      }
187   
188      /**
189       * Get image from specified path/source
190       *
191       * @param string $filename Path to image
192       * @param int $offset Offset at which reading of the image should start
193       * @param int $length Maximum length that should be read
194       * @param bool $forceLength True if the length needs to be the specified
195       *            length, false if not. Default: true
196       *
197       * @return false|string Image data or false if result was empty
198       */
199      public function getImage($filename, $offset, $length, $forceLength = true)
200      {
201          if (empty($this->data))
202          {
203              $this->data = @file_get_contents($filename, null, null, $offset, $length);
204          }
205   
206          // Force length to expected one. Return false if data length
207          // is smaller than expected length
208          if ($forceLength === true)
209          {
210              return (strlen($this->data) < $length) ? false : substr($this->data, $offset, $length) ;
211          }
212   
213          return empty($this->data) ? false : $this->data;
214      }
215   
216      /**
217       * Get return data
218       *
219       * @return array|bool Size array if dimensions could be found, false if not
220       */
221      protected function getReturnData()
222      {
223          return sizeof($this->size) > 1 ? $this->size : false;
224      }
225  }
226