ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
LegacyImages.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
25 
31 {
34 
35  public function __construct()
36  {
37  $this->image_converters = new Images(false);
38  $this->output_options = new ImageOutputOptions();
39  }
40  //
41  // Thumbnails
42  //
43 
48  public function thumbnail(
49  string $path_to_original,
50  string $path_to_output,
51  int $fit_into_size,
52  string $output_format = ImageOutputOptions::FORMAT_KEEP,
53  int $image_quality = 75
54  ): string {
55  $converter = $this->image_converters->thumbnail(
56  $this->buildStream($path_to_original),
57  $fit_into_size,
58  $this->output_options
59  ->withQuality($image_quality)
60  ->withFormat($output_format)
61  );
62  return $this->storeStream($converter, $path_to_output);
63  }
64 
65  //
66  // Cropped Square
67  //
68 
73  public function croppedSquare(
74  string $path_to_original,
75  string $path_to_output,
76  int $square_size,
77  string $output_format = ImageOutputOptions::FORMAT_KEEP,
78  int $image_quality = 75
79  ): string {
80  $converter = $this->image_converters->croppedSquare(
81  $this->buildStream($path_to_original),
82  $square_size,
83  $this->output_options
84  ->withQuality($image_quality)
85  ->withFormat($output_format)
86  );
87 
88  return $this->storeStream($converter, $path_to_output);
89  }
90 
91  //
92  // Resize
93  //
94 
99  public function resizeByWidth(
100  string $path_to_original,
101  string $path_to_output,
102  int $width,
103  string $output_format = ImageOutputOptions::FORMAT_KEEP,
104  int $image_quality = 60
105  ): string {
106  $converter = $this->image_converters->resizeByWidth(
107  $this->buildStream($path_to_original),
108  $width,
109  $this->output_options
110  ->withQuality($image_quality)
111  ->withFormat($output_format)
112  );
113  return $this->storeStream($converter, $path_to_output);
114  }
115 
116 
121  public function resizeByHeight(
122  string $path_to_original,
123  string $path_to_output,
124  int $height,
125  string $output_format = ImageOutputOptions::FORMAT_KEEP,
126  int $image_quality = 60
127  ): string {
128  $converter = $this->image_converters->resizeByHeight(
129  $this->buildStream($path_to_original),
130  $height,
131  $this->output_options
132  ->withQuality($image_quality)
133  ->withFormat($output_format)
134  );
135  return $this->storeStream($converter, $path_to_output);
136  }
137 
138 
143  public function resizeToFixedSize(
144  string $path_to_original,
145  string $path_to_output,
146  int $width,
147  int $height,
148  bool $crop_if_true_and_resize_if_false = true,
149  string $output_format = ImageOutputOptions::FORMAT_KEEP,
150  int $image_quality = 60
151  ): string {
152  $converter = $this->image_converters->resizeToFixedSize(
153  $this->buildStream($path_to_original),
154  $width,
155  $height,
156  $crop_if_true_and_resize_if_false,
157  $this->output_options
158  ->withQuality($image_quality)
159  ->withFormat($output_format)
160  );
161  return $this->storeStream($converter, $path_to_output);
162  }
163 
164  public function convertToFormat(
165  string $path_to_original,
166  string $path_to_output,
167  string $output_format,
168  ?int $width = null,
169  ?int $height = null
170  ): string {
171  $converter = $this->image_converters->convertToFormat(
172  $this->buildStream($path_to_original),
173  $output_format,
174  $width,
175  $height
176  );
177  return $this->storeStream($converter, $path_to_output);
178  }
179 
180  private function storeStream(ImageConverter $converter, string $path): string
181  {
182  if (!$converter->isOK()) {
183  throw $converter->getThrowableIfAny() ?? new \RuntimeException('Could not create requested image');
184  }
185 
186  $stream = $converter->getStream();
187 
188  $stream->rewind();
189  if (file_put_contents($path, $stream->getContents()) === false) {
190  throw new \RuntimeException('Could not store image');
191  }
192  return $path;
193  }
194 
195  private function buildStream(string $path_to_original): \ILIAS\Filesystem\Stream\Stream|FileStream
196  {
197  return Streams::ofResource(fopen($path_to_original, 'rb'));
198  }
199 }
Interface Observer Contains several chained tasks and infos about them.
$path
Definition: ltiservices.php:30
convertToFormat(string $path_to_original, string $path_to_output, string $output_format, ?int $width=null, ?int $height=null)
croppedSquare(string $path_to_original, string $path_to_output, int $square_size, string $output_format=ImageOutputOptions::FORMAT_KEEP, int $image_quality=75)
storeStream(ImageConverter $converter, string $path)
resizeByHeight(string $path_to_original, string $path_to_output, int $height, string $output_format=ImageOutputOptions::FORMAT_KEEP, int $image_quality=60)
resizeToFixedSize(string $path_to_original, string $path_to_output, int $width, int $height, bool $crop_if_true_and_resize_if_false=true, string $output_format=ImageOutputOptions::FORMAT_KEEP, int $image_quality=60)
The base interface for all filesystem streams.
Definition: FileStream.php:31
resizeByWidth(string $path_to_original, string $path_to_output, int $width, string $output_format=ImageOutputOptions::FORMAT_KEEP, int $image_quality=60)
thumbnail(string $path_to_original, string $path_to_output, int $fit_into_size, string $output_format=ImageOutputOptions::FORMAT_KEEP, int $image_quality=75)