Skip to content

Commit dae80ad

Browse files
authored
Merge pull request #62 from imagekit-developer/SDK-94
added effect_shadow and effect_gradient parameter
2 parents c4fade9 + 0125fd2 commit dae80ad

File tree

8 files changed

+63
-65
lines changed

8 files changed

+63
-65
lines changed

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Upload Python Package
22

33
on:
44
release:
5-
types: [created]
5+
types: [published]
66

77
jobs:
88
deploy:

README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ This document presents a list of changes that break the existing functionality o
5757

5858
### Breaking History:
5959

60+
Changes from `3.2.0 -> 4.0.0` are listed below
61+
62+
1. Overlay syntax update
63+
64+
* In version 4.0.0, we've removed the old overlay syntax parameters for transformations, such as `oi`, `ot`, `obg`, and [more](https://docs.imagekit.io/features/image-transformations/overlay). These parameters are deprecated and will start returning errors when used in URLs. Please migrate to the new layers syntax that supports overlay nesting, provides better positional control, and allows more transformations at the layer level. You can start with [examples](https://docs.imagekit.io/features/image-transformations/overlay-using-layers#examples) to learn quickly.
65+
* You can migrate to the new layers syntax using the `raw` transformation parameter.
66+
67+
6068
Changes from `2.2.8 -> 3.0.0` are listed below
6169

6270
1. Throw an Error:
@@ -292,6 +300,29 @@ image_url = imagekit.url({
292300
https://ik.imagekit.io/your_imagekit_id/tr:h-300,w-400,l-image,i-ik_canvas,bg-FF0000,w-300,h-100,l-end/img/sample-video.mp4
293301
```
294302

303+
**5. Arithmetic expressions in transformations**
304+
305+
ImageKit allows use of [arithmetic expressions](https://docs.imagekit.io/features/arithmetic-expressions-in-transformations) in certain dimension and position-related parameters, making media transformations more flexible and dynamic.
306+
307+
For example:
308+
309+
```python
310+
image_url = imagekit.url({
311+
"path": "/default-image.jpg",
312+
"url_endpoint": "https://ik.imagekit.io/your_imagekit_id/endpoint/",
313+
"transformation": [{
314+
"height": "ih_div_2",
315+
"width": "iw_div_4",
316+
"border": "cw_mul_0.05_yellow"
317+
}],
318+
})
319+
```
320+
321+
**Sample Result URL**
322+
```
323+
https://ik.imagekit.io/your_imagekit_id/default-image.jpg?tr=w-iw_div_4,h-ih_div_2,b-cw_mul_0.05_yellow
324+
```
325+
295326
**List of transformations**
296327

297328
The complete list of transformations supported and their usage in ImageKit is available [here](https://docs.imagekit.io/features/image-transformations/resize-crop-and-other-transformations).
@@ -328,6 +359,8 @@ If you want to generate transformations in your application and add them to the
328359
| effect_usm | e-usm |
329360
| effect_contrast | e-contrast |
330361
| effect_gray | e-grayscale |
362+
| effect_shadow | e-shadow |
363+
| effect_gradient | e-gradient |
331364
| original | orig |
332365
| raw | replaced by the parameter value |
333366

@@ -363,6 +396,16 @@ extensions = [
363396
}
364397
]
365398

399+
transformation = {
400+
'pre': 'l-text,i-Imagekit,fs-50,l-end',
401+
'post': [
402+
{
403+
'type': 'transformation',
404+
'value': 'w-100'
405+
}
406+
]
407+
}
408+
366409
options = UploadFileRequestOptions(
367410
use_unique_file_name=False,
368411
tags=['abc', 'def'],
@@ -378,6 +421,7 @@ options = UploadFileRequestOptions(
378421
overwrite_tags=False,
379422
overwrite_custom_metadata=True,
380423
custom_metadata={'testss': 12},
424+
transformation=transformation
381425
)
382426

383427
result = imagekit.upload_file(file='<url|base_64|binary>', # required

imagekitio/constants/files.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@
2929
"overwrite_custom_metadata",
3030
"custom_metadata",
3131
"embedded_metadata",
32+
"transformation",
3233
]

imagekitio/constants/supported_transform.py

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,34 +15,6 @@
1515
"rotation": "rt",
1616
"blur": "bl",
1717
"named": "n",
18-
"overlay_x": "ox",
19-
"overlay_y": "oy",
20-
"overlay_focus": "ofo",
21-
"overlay_height": "oh",
22-
"overlay_width": "ow",
23-
"overlay_image": "oi",
24-
"overlay_image_trim": "oit",
25-
"overlay_image_aspect_ratio": "oiar",
26-
"overlay_image_background": "oibg",
27-
"overlay_image_border": "oib",
28-
"overlay_image_dpr": "oidpr",
29-
"overlay_image_quality": "oiq",
30-
"overlay_image_cropping": "oic",
31-
"overlay_image_focus": "oifo",
32-
"overlay_text": "ot",
33-
"overlay_text_font_size": "ots",
34-
"overlay_text_font_family": "otf",
35-
"overlay_text_color": "otc",
36-
"overlay_text_transparency": "oa",
37-
"overlay_alpha": "oa",
38-
"overlay_text_typography": "ott",
39-
"overlay_background": "obg",
40-
"overlay_text_encoded": "ote",
41-
"overlay_text_width": "otw",
42-
"overlay_text_background": "otbg",
43-
"overlay_text_padding": "otp",
44-
"overlay_text_inner_alignment": "otia",
45-
"overlay_radius": "or",
4618
"progressive": "pr",
4719
"lossless": "lo",
4820
"trim": "t",
@@ -54,6 +26,8 @@
5426
"effect_usm": "e-usm",
5527
"effect_contrast": "e-contrast",
5628
"effect_gray": "e-grayscale",
29+
'effect_shadow': "e-shadow",
30+
'effect_gradient': "e-gradient",
5731
"original": "orig",
5832
"raw": "raw",
5933
}

imagekitio/models/UploadFileRequestOptions.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def __init__(
1818
overwrite_tags: bool = None,
1919
overwrite_custom_metadata: bool = None,
2020
custom_metadata: json = None,
21+
transformation: json = None,
2122
):
2223
if use_unique_file_name is not None:
2324
self.use_unique_file_name = use_unique_file_name
@@ -45,3 +46,5 @@ def __init__(
4546
self.overwrite_custom_metadata = overwrite_custom_metadata
4647
if custom_metadata is not None:
4748
self.custom_metadata = custom_metadata
49+
if transformation is not None:
50+
self.transformation = transformation

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
setuptools.setup(
1010
name="imagekitio",
11-
version="3.2.0",
11+
version="4.0.0",
1212
description="Python wrapper for the ImageKit API",
1313
long_description=long_description,
1414
long_description_content_type="text/markdown",

tests/test_files_ops.py

Lines changed: 7 additions & 4 deletions
Large diffs are not rendered by default.

tests/test_generate_url.py

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -364,32 +364,6 @@ def test_generate_url_with_all_params(self):
364364
"rotation": 90,
365365
"blur": 10,
366366
"named": "some_name",
367-
"overlay_image": "/folder/file.jpg", # leading slash case
368-
"overlay_image_aspect_ratio": "4:3",
369-
"overlay_image_background": "0F0F0F",
370-
"overlay_image_border": "10_0F0F0F",
371-
"overlay_image_dpr": 2,
372-
"overlay_image_quality": 50,
373-
"overlay_image_cropping": "force",
374-
"overlay_image_trim": False,
375-
"overlay_x": 35,
376-
"overlay_y": 35,
377-
"overlay_focus": "bottom",
378-
"overlay_height": 20,
379-
"overlay_width": 20,
380-
"overlay_text": "two words",
381-
"overlay_text_font_size": 20,
382-
"overlay_text_font_family": "Open Sans",
383-
"overlay_text_color": "00FFFF",
384-
"overlay_text_transparency": 5,
385-
"overlay_text_typography": "b",
386-
"overlay_background": "00AAFF55",
387-
"overlay_text_encoded": "b3ZlcmxheSBtYWRlIGVhc3k%3D",
388-
"overlay_text_width": 50,
389-
"overlay_text_background": "00AAFF55",
390-
"overlay_text_padding": 40,
391-
"overlay_text_inner_alignment": "left",
392-
"overlay_radius": 10,
393367
"progressive": "true",
394368
"lossless": "true",
395369
"trim": 5,
@@ -401,6 +375,8 @@ def test_generate_url_with_all_params(self):
401375
"effect_usm": "2-2-0.8-0.024",
402376
"effect_contrast": "true",
403377
"effect_gray": "true",
378+
"effect_shadow": "bl-15_st-40_x-10_y-N5",
379+
"effect_gradient": "from-red_to-white",
404380
"original": True, # Boolean handling
405381
"raw": "w-200,h-200",
406382
}
@@ -410,11 +386,8 @@ def test_generate_url_with_all_params(self):
410386
self.assertEqual(
411387
url,
412388
"https://test-domain.com/test-endpoint/tr:h-300,w-400,ar-4-3,q-40,c-force,cm-extract,fo-left,f-jpeg,r-50,"
413-
"bg-A94D34,b-5-A94D34,rt-90,bl-10,n-some_name,oi-folder@@file.jpg,oiar-4:3,oibg-0F0F0F,oib-10_0F0F0F,"
414-
"oidpr-2,oiq-50,oic-force,oit-false,ox-35,oy-35,ofo-bottom,oh-20,ow-20,ot-two words,ots-20,otf-Open Sans,"
415-
"otc-00FFFF,oa-5,ott-b,obg-00AAFF55,ote-b3ZlcmxheSBtYWRlIGVhc3k%3D,otw-50,otbg-00AAFF55,otp-40,otia-left,"
416-
"or-10,pr-true,lo-true,t-5,md-true,cp-true,di-folder@@file.jpg,dpr-3,e-sharpen-10,e-usm-2-2-0.8-0.024,"
417-
"e-contrast-true,e-grayscale-true,orig-true,w-200,h-200/test_path.jpg",
389+
"bg-A94D34,b-5-A94D34,rt-90,bl-10,n-some_name,pr-true,lo-true,t-5,md-true,cp-true,di-folder@@file.jpg,dpr-3,e-sharpen-10,e-usm-2-2-0.8-0.024,"
390+
"e-contrast-true,e-grayscale-true,e-shadow-bl-15_st-40_x-10_y-N5,e-gradient-from-red_to-white,orig-true,w-200,h-200/test_path.jpg",
418391
)
419392

420393
def test_get_signature_with_100_expire_seconds(self):

0 commit comments

Comments
 (0)