Verzeichnisstruktur phpBB-3.3.16
- Veröffentlicht
- 27.04.2026
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. |
|
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
ImageReader.php
001 <?php
002
003 /**
004 * fast-image-size image reader
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 ImageReader
015 {
016 /** @var string Data retrieved from remote */
017 protected $data = '';
018
019 /** @var array Stream context options for retrieving remote images */
020 protected $streamContextOptions = [
021 'http' => [
022 'timeout' => 5.0,
023 'ignore_errors' => true,
024 ],
025 ];
026
027 /**
028 * Get image from specified path/source
029 *
030 * @param string $filename Path to image
031 * @param int $offset Offset at which reading of the image should start
032 * @param int $length Maximum length that should be read, must be greater than 0
033 * @param bool $forceLength True if the length needs to be the specified
034 * length, false if not. Default: true
035 *
036 * @return false|string Image data or false if result was empty
037 */
038 public function getImage(string $filename, int $offset, int $length, bool $forceLength = true)
039 {
040 if (empty($this->data))
041 {
042 $this->data = $this->retrieveImageData($filename, $offset, $length) ?: '';
043 }
044
045 // Force length to expected one. Return false if data length
046 // is smaller than expected length
047 if ($forceLength === true)
048 {
049 return (strlen($this->data) < $length) ? false : substr($this->data, $offset, $length) ;
050 }
051
052 return empty($this->data) ? false : $this->data;
053 }
054
055 /**
056 * Retrieve image data from specified path/source
057 *
058 * @param string $filename Path to image
059 * @param int $offset Offset at which reading of the image should start
060 * @param int $max_length Maximum length that should be read
061 *
062 * @return false|string Image data or false if result was empty
063 */
064 protected function retrieveImageData(string $filename, int $offset, int $max_length)
065 {
066 $context = $this->create_stream_context();
067
068 // Use @ to suppress warnings from connection/DNS/SSL failures
069 return @file_get_contents($filename, false, $context, $offset, $max_length);
070 }
071
072 /**
073 * Set stream context options for retrieving remote images
074 *
075 * @param array $options Stream context options
076 */
077 public function setStreamContextOptions(array $options)
078 {
079 $this->streamContextOptions = $options;
080 }
081
082 /**
083 * Create stream context for retrieving remote images
084 *
085 * @return resource Stream context
086 */
087 protected function create_stream_context()
088 {
089 return stream_context_create($this->streamContextOptions);
090 }
091
092 /**
093 * Reset image data
094 */
095 public function reset(): void
096 {
097 $this->data = '';
098 }
099 }
100