From 5201e488152b860501ab4e42db5ff8e4dc32dd80 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 7 Jun 2021 12:02:46 +0545 Subject: [PATCH 1/7] adding image crop gravity support --- app/controllers/api/storage.php | 5 +++-- composer.json | 2 +- composer.lock | 38 ++++++++++++++++----------------- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index b3060eaf4..d7b214dd2 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -242,6 +242,7 @@ App::get('/v1/storage/files/:fileId/preview') ->param('fileId', '', new UID(), 'File unique ID') ->param('width', 0, new Range(0, 4000), 'Resize preview image width, Pass an integer between 0 to 4000.', true) ->param('height', 0, new Range(0, 4000), 'Resize preview image height, Pass an integer between 0 to 4000.', true) + ->param('gravity', Image::GRAVITY_CENTER, new Range(0, 8), 'Image crop gravity', true) ->param('quality', 100, new Range(0, 100), 'Preview image quality. Pass an integer between 0 to 100. Defaults to 100.', true) ->param('borderWidth', 0, new Range(0, 100), 'Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.', true) ->param('borderColor', '', new HexColor(), 'Preview image border color. Use a valid HEX color, no # is needed for prefix.', true) @@ -254,7 +255,7 @@ App::get('/v1/storage/files/:fileId/preview') ->inject('response') ->inject('project') ->inject('projectDB') - ->action(function ($fileId, $width, $height, $quality, $borderWidth, $borderColor, $borderRadius, $opacity, $rotation, $background, $output, $request, $response, $project, $projectDB) { + ->action(function ($fileId, $width, $height, $gravity, $quality, $borderWidth, $borderColor, $borderRadius, $opacity, $rotation, $background, $output, $request, $response, $project, $projectDB) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $project */ @@ -342,7 +343,7 @@ App::get('/v1/storage/files/:fileId/preview') $image = new Image($source); - $image->crop((int) $width, (int) $height); + $image->crop((int) $width, (int) $height, (int) $gravity); if (!empty($opacity) || $opacity==0) { $image->setOpacity($opacity); diff --git a/composer.json b/composer.json index ee9942a9f..c27cf8276 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "utopia-php/domains": "1.1.*", "utopia-php/swoole": "0.2.*", "utopia-php/storage": "0.5.*", - "utopia-php/image": "0.2.*", + "utopia-php/image": "0.3.*", "resque/php-resque": "1.3.6", "matomo/device-detector": "4.2.2", "dragonmantank/cron-expression": "3.1.0", diff --git a/composer.lock b/composer.lock index 1a89b21c8..82b95e2d2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9a72955402438e63ec6101723c33f544", + "content-hash": "2d32e708dd70ab32d06b912e74b1194a", "packages": [ { "name": "adhocore/jwt", @@ -1324,16 +1324,16 @@ }, { "name": "utopia-php/abuse", - "version": "0.4.0", + "version": "0.4.1", "source": { "type": "git", "url": "https://github.com/utopia-php/abuse.git", - "reference": "2b8cc40a67c045c137b44d1a11326f494acf50a4" + "reference": "8b7973aae4b02489bd22ffea45b985608f13b6d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/2b8cc40a67c045c137b44d1a11326f494acf50a4", - "reference": "2b8cc40a67c045c137b44d1a11326f494acf50a4", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/8b7973aae4b02489bd22ffea45b985608f13b6d9", + "reference": "8b7973aae4b02489bd22ffea45b985608f13b6d9", "shasum": "" }, "require": { @@ -1370,9 +1370,9 @@ ], "support": { "issues": "https://github.com/utopia-php/abuse/issues", - "source": "https://github.com/utopia-php/abuse/tree/0.4.0" + "source": "https://github.com/utopia-php/abuse/tree/0.4.1" }, - "time": "2021-03-17T20:21:24+00:00" + "time": "2021-06-05T14:31:33+00:00" }, { "name": "utopia-php/analytics", @@ -1742,16 +1742,16 @@ }, { "name": "utopia-php/image", - "version": "0.2.1", + "version": "0.3.0", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "0754955a165483852184d1215cc3bf659432d23a" + "reference": "7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/0754955a165483852184d1215cc3bf659432d23a", - "reference": "0754955a165483852184d1215cc3bf659432d23a", + "url": "https://api.github.com/repos/utopia-php/image/zipball/7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa", + "reference": "7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa", "shasum": "" }, "require": { @@ -1789,9 +1789,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.2.1" + "source": "https://github.com/utopia-php/image/tree/0.3.0" }, - "time": "2021-04-13T07:47:24+00:00" + "time": "2021-06-02T07:08:04+00:00" }, { "name": "utopia-php/locale", @@ -4823,16 +4823,16 @@ }, { "name": "sebastian/type", - "version": "2.3.1", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + "reference": "0d1c587401514d17e8f9258a27e23527cb1b06c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0d1c587401514d17e8f9258a27e23527cb1b06c1", + "reference": "0d1c587401514d17e8f9258a27e23527cb1b06c1", "shasum": "" }, "require": { @@ -4867,7 +4867,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + "source": "https://github.com/sebastianbergmann/type/tree/2.3.2" }, "funding": [ { @@ -4875,7 +4875,7 @@ "type": "github" } ], - "time": "2020-10-26T13:18:59+00:00" + "time": "2021-06-04T13:02:07+00:00" }, { "name": "sebastian/version", From 4b9be0f741d1bcfcfee863f12c6275bf4a5b8c67 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 8 Jun 2021 12:25:09 +0545 Subject: [PATCH 2/7] composer update --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 92e91a62a..26b8c6c85 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6704f7df5ffe0baac3633dc8e683ed78", + "content-hash": "399d2426ca92e04b6d6fb84a91c316c3", "packages": [ { "name": "adhocore/jwt", From 4fb54ac87b2d793e8dbb88690bd71815cfc1abbd Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 9 Jun 2021 12:26:39 +0545 Subject: [PATCH 3/7] fix crop gravity param type --- app/controllers/api/storage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index d7b214dd2..f4f00cbea 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -242,7 +242,7 @@ App::get('/v1/storage/files/:fileId/preview') ->param('fileId', '', new UID(), 'File unique ID') ->param('width', 0, new Range(0, 4000), 'Resize preview image width, Pass an integer between 0 to 4000.', true) ->param('height', 0, new Range(0, 4000), 'Resize preview image height, Pass an integer between 0 to 4000.', true) - ->param('gravity', Image::GRAVITY_CENTER, new Range(0, 8), 'Image crop gravity', true) + ->param('gravity', Image::GRAVITY_CENTER, new WhiteList(Image::GRAVITY_CENTER, Image::GRAVITY_NORTH, Image::GRAVITY_NORTHWEST, Image::GRAVITY_NORTHEAST, Image::GRAVITY_WEST, Image::GRAVITY_EAST, Image::GRAVITY_SOUTHWEST, Image::GRAVITY_SOUTH, Image::GRAVITY_SOUTHEAST), 'Image crop gravity', true) ->param('quality', 100, new Range(0, 100), 'Preview image quality. Pass an integer between 0 to 100. Defaults to 100.', true) ->param('borderWidth', 0, new Range(0, 100), 'Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.', true) ->param('borderColor', '', new HexColor(), 'Preview image border color. Use a valid HEX color, no # is needed for prefix.', true) From 3c29e0da95d5b942c033b91c665752b8f1c66133 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 9 Jun 2021 13:06:49 +0545 Subject: [PATCH 4/7] update image library --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 26b8c6c85..053de4bab 100644 --- a/composer.lock +++ b/composer.lock @@ -1742,16 +1742,16 @@ }, { "name": "utopia-php/image", - "version": "0.3.0", + "version": "0.3.1", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa" + "reference": "20849a3a55790bd6eb3decde9f9708f04d58e489" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa", - "reference": "7761ff565e505bb3ddb9cfa05b7e1efddf3bebaa", + "url": "https://api.github.com/repos/utopia-php/image/zipball/20849a3a55790bd6eb3decde9f9708f04d58e489", + "reference": "20849a3a55790bd6eb3decde9f9708f04d58e489", "shasum": "" }, "require": { @@ -1789,9 +1789,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.3.0" + "source": "https://github.com/utopia-php/image/tree/0.3.1" }, - "time": "2021-06-02T07:08:04+00:00" + "time": "2021-06-09T07:12:35+00:00" }, { "name": "utopia-php/locale", From e1133b665d2ff2afb55581a21ae233108e81c3e0 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 9 Jun 2021 14:22:20 +0545 Subject: [PATCH 5/7] fix whitelist issue --- app/controllers/api/storage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index f4f00cbea..68edc774e 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -242,7 +242,7 @@ App::get('/v1/storage/files/:fileId/preview') ->param('fileId', '', new UID(), 'File unique ID') ->param('width', 0, new Range(0, 4000), 'Resize preview image width, Pass an integer between 0 to 4000.', true) ->param('height', 0, new Range(0, 4000), 'Resize preview image height, Pass an integer between 0 to 4000.', true) - ->param('gravity', Image::GRAVITY_CENTER, new WhiteList(Image::GRAVITY_CENTER, Image::GRAVITY_NORTH, Image::GRAVITY_NORTHWEST, Image::GRAVITY_NORTHEAST, Image::GRAVITY_WEST, Image::GRAVITY_EAST, Image::GRAVITY_SOUTHWEST, Image::GRAVITY_SOUTH, Image::GRAVITY_SOUTHEAST), 'Image crop gravity', true) + ->param('gravity', Image::GRAVITY_CENTER, new WhiteList([Image::GRAVITY_CENTER, Image::GRAVITY_NORTH, Image::GRAVITY_NORTHWEST, Image::GRAVITY_NORTHEAST, Image::GRAVITY_WEST, Image::GRAVITY_EAST, Image::GRAVITY_SOUTHWEST, Image::GRAVITY_SOUTH, Image::GRAVITY_SOUTHEAST]), 'Image crop gravity', true) ->param('quality', 100, new Range(0, 100), 'Preview image quality. Pass an integer between 0 to 100. Defaults to 100.', true) ->param('borderWidth', 0, new Range(0, 100), 'Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.', true) ->param('borderColor', '', new HexColor(), 'Preview image border color. Use a valid HEX color, no # is needed for prefix.', true) From 1f1b68f0cada5692926fae6c3c2bf6c9a26c72ef Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 10 Jun 2021 15:16:03 +0545 Subject: [PATCH 6/7] update dependency --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 053de4bab..9e7affe29 100644 --- a/composer.lock +++ b/composer.lock @@ -1742,16 +1742,16 @@ }, { "name": "utopia-php/image", - "version": "0.3.1", + "version": "0.3.2", "source": { "type": "git", "url": "https://github.com/utopia-php/image.git", - "reference": "20849a3a55790bd6eb3decde9f9708f04d58e489" + "reference": "2044fdd44d87c4253cfe929cca975fd037461b00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/image/zipball/20849a3a55790bd6eb3decde9f9708f04d58e489", - "reference": "20849a3a55790bd6eb3decde9f9708f04d58e489", + "url": "https://api.github.com/repos/utopia-php/image/zipball/2044fdd44d87c4253cfe929cca975fd037461b00", + "reference": "2044fdd44d87c4253cfe929cca975fd037461b00", "shasum": "" }, "require": { @@ -1789,9 +1789,9 @@ ], "support": { "issues": "https://github.com/utopia-php/image/issues", - "source": "https://github.com/utopia-php/image/tree/0.3.1" + "source": "https://github.com/utopia-php/image/tree/0.3.2" }, - "time": "2021-06-09T07:12:35+00:00" + "time": "2021-06-10T09:16:11+00:00" }, { "name": "utopia-php/locale", @@ -6025,5 +6025,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } From 4ea0d627f486965a0a842afa93da531ef194118c Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Fri, 11 Jun 2021 18:11:04 +0545 Subject: [PATCH 7/7] remove int conversion --- app/controllers/api/storage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 68edc774e..c4fe8c849 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -343,7 +343,7 @@ App::get('/v1/storage/files/:fileId/preview') $image = new Image($source); - $image->crop((int) $width, (int) $height, (int) $gravity); + $image->crop((int) $width, (int) $height, $gravity); if (!empty($opacity) || $opacity==0) { $image->setOpacity($opacity);