Skip to content

Commit 1f2a7e2

Browse files
authored
Merge pull request #4 from maksympron/feat/filre-releations-update
feat: add ability to change driver
2 parents ecb7aaf + c713e75 commit 1f2a7e2

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"hyperf/guzzle": "^3.1",
3333
"hyperf/translation": "^3.1",
3434
"hyperf/validation": "^3.1",
35-
"intervention/image": "^2.7",
35+
"intervention/image": "^3.0",
3636
"league/flysystem": "^2.0|^3.0"
3737
},
3838
"require-dev": {

publish/config/file_upload.php

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use OnixSystemsPHP\HyperfCore\Constants\Time;
1010

1111
use function Hyperf\Support\env;
12+
use Intervention\Image\Drivers\Gd\Driver as GdDriver;
1213

1314
return [
1415
'mime_types' => [
@@ -24,6 +25,7 @@
2425
'image/jpeg',
2526
'image/bmp',
2627
],
28+
'driver' => GdDriver::class,
2729
'file_actions' => [
2830
'delete_it',
2931
],

src/Model/Behaviour/FileRelations.php

+9-7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Hyperf\Filesystem\FilesystemFactory;
2121
use Hyperf\HttpMessage\Exception\BadRequestHttpException;
2222
use Hyperf\Stringable\Str;
23+
use Intervention\Image\Drivers\Gd\Driver;
2324
use Intervention\Image\ImageManager;
2425
use OnixSystemsPHP\HyperfCore\Contract\CoreAuthenticatable;
2526
use OnixSystemsPHP\HyperfCore\Contract\CoreAuthenticatableProvider;
@@ -42,13 +43,13 @@ trait FileRelations
4243
* 'mimeTypes' => ['*'],
4344
* 'presets' => [ // presets array. only for images
4445
* '150x150' => [
45-
* 'fit' => [150, 150],
46+
* 'cover' => [150, 150],
4647
* ],
4748
* '250x250' => [
48-
* 'fit' => [250, 250],
49+
* 'cover' => [250, 250],
4950
* ],
5051
* '500x500' => [
51-
* 'fit' => [500, 500],
52+
* 'cover' => [500, 500],
5253
* ],
5354
* ],
5455
* ],
@@ -168,7 +169,7 @@ private function filterActiveFiles(array $files, bool $revert = false): array
168169
{
169170
return array_filter(array_map(function (File $file) use ($revert) {
170171
$active = empty($file->deleted_at) && empty($file->delete_it);
171-
return ($active === ! $revert) ? $file->id : null;
172+
return $active === ! $revert ? $file->id : null;
172173
}, $files));
173174
}
174175

@@ -223,23 +224,24 @@ private function generateImagePresets(File $file, array $params, ConfigInterface
223224
$filesystem = ApplicationContext::getContainer()->get(FilesystemFactory::class)->get($storage);
224225
$publicPathPrefix = $config->get("file_upload.storage.{$storage}.public_path_prefix", '');
225226
$storagePathPrefix = $config->get("file_upload.storage.{$storage}.storage_path_prefix", '');
226-
$manager = new ImageManager(['driver' => 'gd']);
227+
$imageDriver = $config->get('file_upload.driver', Driver::class);
228+
$manager = new ImageManager($imageDriver);
227229
foreach ($params['presets'] as $preset => $options) {
228230
$extension = pathinfo($file->name, PATHINFO_EXTENSION);
229231
$presetName = "{$preset}.{$extension}";
230232
$destination = $file->path . DIRECTORY_SEPARATOR . $presetName;
231233
if ($filesystem->fileExists($destination)) {
232234
continue;
233235
}
234-
$intImage = $manager->make($filesystem->read($file->full_path));
236+
$intImage = $manager->read($filesystem->read($file->full_path));
235237
foreach ($options as $action => $params) {
236238
if (is_callable($params)) {
237239
$intImage = $params($intImage, $filesystem->read($file->full_path));
238240
} else {
239241
$intImage = call_user_func_array([$intImage, $action], $params);
240242
}
241243
}
242-
$filesystem->write($destination, $intImage->encode()->getEncoded(), []);
244+
$filesystem->write($destination, $intImage->encode()->toString());
243245
$publicDestination = $publicPathPrefix . Str::after($destination, $storagePathPrefix);
244246
$file->addPreset($preset, "{$file->domain}{$publicDestination}");
245247
}

0 commit comments

Comments
 (0)