py-img-processor 1.0.0__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of py-img-processor might be problematic. Click here for more details.

Files changed (30) hide show
  1. {py_img_processor-1.0.0/py_img_processor.egg-info → py_img_processor-1.0.2}/PKG-INFO +30 -9
  2. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/README.md +28 -8
  3. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/__init__.py +1 -1
  4. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/main.py +10 -7
  5. {py_img_processor-1.0.0 → py_img_processor-1.0.2/py_img_processor.egg-info}/PKG-INFO +30 -9
  6. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/requires.txt +1 -0
  7. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/setup.py +1 -0
  8. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/LICENSE +0 -0
  9. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/MANIFEST.in +0 -0
  10. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/enums.py +0 -0
  11. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/exceptions.py +0 -0
  12. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/__init__.py +0 -0
  13. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/alpha.py +0 -0
  14. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/base.py +0 -0
  15. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/blur.py +0 -0
  16. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/circle.py +0 -0
  17. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/crop.py +0 -0
  18. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/gray.py +0 -0
  19. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/merge.py +0 -0
  20. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/resize.py +0 -0
  21. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/rotate.py +0 -0
  22. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/parsers/watermark.py +0 -0
  23. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/processor.py +0 -0
  24. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/imgprocessor/utils.py +0 -0
  25. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/SOURCES.txt +0 -0
  26. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/dependency_links.txt +0 -0
  27. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/entry_points.txt +0 -0
  28. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/not-zip-safe +0 -0
  29. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/py_img_processor.egg-info/top_level.txt +0 -0
  30. {py_img_processor-1.0.0 → py_img_processor-1.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py-img-processor
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: Image editor using Python and Pillow.
5
5
  Home-page: https://github.com/SkylerHu/py-img-processor.git
6
6
  Author: SkylerHu
@@ -23,6 +23,7 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: py-enum>=1.1.1
25
25
  Requires-Dist: Pillow>=8
26
+ Requires-Dist: typing_extensions
26
27
 
27
28
  # py-img-processor
28
29
 
@@ -75,6 +76,12 @@ Image editor using Python and Pillow.
75
76
  > `注意`:`PROCESSOR_TEXT_FONT` 字体的设置是文字水印必要参数,需保证系统已安装该字体。默认值 `Arial Unicode.ttf` 是MacOS系统存在的字体,建议设置字体文件路径。
76
77
 
77
78
  ## 2.2 图像处理
79
+
80
+ 测试图片 `lenna-400x225.jpg` (像素400x225)
81
+
82
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225.jpg)
83
+
84
+
78
85
  ### 处理函数
79
86
  `process_image_by_path(input_path, out_path, params)`
80
87
 
@@ -97,13 +104,17 @@ from imgprocessor.utils import base64url_encode
97
104
  from imgprocessor.processor import process_image_by_path
98
105
 
99
106
  process_image_by_path(
100
- "tests/imgs/lenna-400x225.jpg",
107
+ "docs/imgs/lenna-400x225.jpg",
101
108
  "/tmp/output.png",
102
109
  # 对图片缩放、裁剪、生成圆角、并转成png存储
103
- "resize,s_1080/crop,w_700,h_700//watermark,text_{base64url_encode('Hello 世界')}/circle,r_10/format,png",
110
+ f"resize,s_200/crop,w_200,h_200,g_center/watermark,text_{base64url_encode('Hello 世界')},color_FFF,size_20/circle,r_10/format,png",
104
111
  )
105
112
  ```
106
113
 
114
+ 输出图像 (像素200x200):
115
+
116
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-edit.png)
117
+
107
118
  ### 图像处理参数为JSON
108
119
  - 只是形式不同,参数和字符串形式无本质区别;
109
120
  - `format`、`quality`、`interlace`三个值在JSON第一层,直接按照`key: value`的形式设置;
@@ -111,14 +122,14 @@ process_image_by_path(
111
122
 
112
123
  ```python
113
124
  process_image_by_path(
114
- "tests/imgs/lenna-400x225.jpg",
125
+ "docs/imgs/lenna-400x225.jpg",
115
126
  "/tmp/output.png",
116
127
  {
117
128
  "actions": [
118
- {"key": "resize", "s": 1080},
119
- {"key": "crop", "w": 700, "h": 700},
129
+ {"key": "resize", "s": 200},
130
+ {"key": "crop", "w": 200, "h": 200, "g": "center"},
120
131
  # JSON形式参数, text无需encode
121
- {"key": "watermark", "text": "Hello 世界"},
132
+ {"key": "watermark", "text": "Hello 世界", "color": "FFF", "size": 20},
122
133
  {"key": "circle", "r": 10},
123
134
  ],
124
135
  "format": "png",
@@ -149,16 +160,26 @@ optional arguments:
149
160
  示例:
150
161
  ```shell
151
162
  # 对单个图像进行多个操作,actions有2个参数,会输出2个图像文件
152
- img-processor -P tests/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_300 circle,r_100 --overwrite
163
+ img-processor -P docs/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_200/format,webp resize,s_225/crop,w_225,h_225,g_center/circle/format,png --overwrite
153
164
  ```
154
165
 
155
166
  > 注意:action参数仅支持字符串表达形式。
156
167
 
168
+ 会输出2个图像文件:
169
+
170
+ `/tmp/lenna-400x225-0.webp` (像素355x200)
171
+
172
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-0.webp)
173
+
174
+ `/tmp/lenna-400x225-1.png` (像素225x225)
175
+
176
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-1.png)
177
+
157
178
 
158
179
  ## 提取图像主色调
159
180
  ```python
160
181
  from imgprocessor.processor import extract_main_color
161
182
 
162
- extract_main_color("tests/imgs/lenna-400x225.jpg")
183
+ extract_main_color("docs/imgs/lenna-400x225.jpg")
163
184
  # 输出: "905C4C"
164
185
  ```
@@ -49,6 +49,12 @@ Image editor using Python and Pillow.
49
49
  > `注意`:`PROCESSOR_TEXT_FONT` 字体的设置是文字水印必要参数,需保证系统已安装该字体。默认值 `Arial Unicode.ttf` 是MacOS系统存在的字体,建议设置字体文件路径。
50
50
 
51
51
  ## 2.2 图像处理
52
+
53
+ 测试图片 `lenna-400x225.jpg` (像素400x225)
54
+
55
+ ![](./docs/imgs/lenna-400x225.jpg)
56
+
57
+
52
58
  ### 处理函数
53
59
  `process_image_by_path(input_path, out_path, params)`
54
60
 
@@ -71,13 +77,17 @@ from imgprocessor.utils import base64url_encode
71
77
  from imgprocessor.processor import process_image_by_path
72
78
 
73
79
  process_image_by_path(
74
- "tests/imgs/lenna-400x225.jpg",
80
+ "docs/imgs/lenna-400x225.jpg",
75
81
  "/tmp/output.png",
76
82
  # 对图片缩放、裁剪、生成圆角、并转成png存储
77
- "resize,s_1080/crop,w_700,h_700//watermark,text_{base64url_encode('Hello 世界')}/circle,r_10/format,png",
83
+ f"resize,s_200/crop,w_200,h_200,g_center/watermark,text_{base64url_encode('Hello 世界')},color_FFF,size_20/circle,r_10/format,png",
78
84
  )
79
85
  ```
80
86
 
87
+ 输出图像 (像素200x200):
88
+
89
+ ![](./docs/imgs/lenna-edit.png)
90
+
81
91
  ### 图像处理参数为JSON
82
92
  - 只是形式不同,参数和字符串形式无本质区别;
83
93
  - `format`、`quality`、`interlace`三个值在JSON第一层,直接按照`key: value`的形式设置;
@@ -85,14 +95,14 @@ process_image_by_path(
85
95
 
86
96
  ```python
87
97
  process_image_by_path(
88
- "tests/imgs/lenna-400x225.jpg",
98
+ "docs/imgs/lenna-400x225.jpg",
89
99
  "/tmp/output.png",
90
100
  {
91
101
  "actions": [
92
- {"key": "resize", "s": 1080},
93
- {"key": "crop", "w": 700, "h": 700},
102
+ {"key": "resize", "s": 200},
103
+ {"key": "crop", "w": 200, "h": 200, "g": "center"},
94
104
  # JSON形式参数, text无需encode
95
- {"key": "watermark", "text": "Hello 世界"},
105
+ {"key": "watermark", "text": "Hello 世界", "color": "FFF", "size": 20},
96
106
  {"key": "circle", "r": 10},
97
107
  ],
98
108
  "format": "png",
@@ -123,16 +133,26 @@ optional arguments:
123
133
  示例:
124
134
  ```shell
125
135
  # 对单个图像进行多个操作,actions有2个参数,会输出2个图像文件
126
- img-processor -P tests/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_300 circle,r_100 --overwrite
136
+ img-processor -P docs/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_200/format,webp resize,s_225/crop,w_225,h_225,g_center/circle/format,png --overwrite
127
137
  ```
128
138
 
129
139
  > 注意:action参数仅支持字符串表达形式。
130
140
 
141
+ 会输出2个图像文件:
142
+
143
+ `/tmp/lenna-400x225-0.webp` (像素355x200)
144
+
145
+ ![](./docs/imgs/lenna-400x225-0.webp)
146
+
147
+ `/tmp/lenna-400x225-1.png` (像素225x225)
148
+
149
+ ![](./docs/imgs/lenna-400x225-1.png)
150
+
131
151
 
132
152
  ## 提取图像主色调
133
153
  ```python
134
154
  from imgprocessor.processor import extract_main_color
135
155
 
136
- extract_main_color("tests/imgs/lenna-400x225.jpg")
156
+ extract_main_color("docs/imgs/lenna-400x225.jpg")
137
157
  # 输出: "905C4C"
138
158
  ```
@@ -5,7 +5,7 @@ import importlib
5
5
 
6
6
 
7
7
  __all__ = ["settings", "VERSION"]
8
- __version__ = "1.0.0"
8
+ __version__ = "1.0.2"
9
9
 
10
10
 
11
11
  VERSION = __version__
@@ -7,7 +7,7 @@ import argparse
7
7
  import traceback
8
8
 
9
9
  from imgprocessor import VERSION
10
- from imgprocessor.processor import process_image_by_path
10
+ from imgprocessor.processor import ProcessParams, process_image_by_path
11
11
 
12
12
 
13
13
  def main(argv: typing.Optional[list[str]] = None) -> int:
@@ -59,21 +59,24 @@ def main(argv: typing.Optional[list[str]] = None) -> int:
59
59
  print(f_tag, flush=True, end="\r")
60
60
  # 相对path的相对路径
61
61
  if not base_dir or base_dir in [".", "./"]:
62
- relative_path = file_path
62
+ input_file_name = file_path
63
63
  else:
64
- relative_path = file_path.split(base_dir, 1)[-1]
65
- relative_path = relative_path.strip("/")
64
+ input_file_name = file_path.split(base_dir, 1)[-1]
65
+ input_file_name = input_file_name.strip("/")
66
66
 
67
- prefix, ext = os.path.splitext(relative_path)
67
+ prefix, ext = os.path.splitext(input_file_name)
68
68
  for idx, param_str in enumerate(args.action):
69
+ params = ProcessParams.parse_str(param_str)
69
70
  # 初始化目标文件路径
70
71
  if total == 1 and ac_num == 1 and os.path.splitext(output)[-1]:
71
72
  out_path = output
72
73
  else:
74
+ if params.save_parser.format:
75
+ ext = f".{params.save_parser.format}"
73
76
  if ac_num == 1:
74
- target_name = relative_path
77
+ target_name = f"{prefix}{ext}"
75
78
  else:
76
- target_name = f"{prefix}-{idx}.{ext}"
79
+ target_name = f"{prefix}-{idx}{ext}"
77
80
  out_path = os.path.join(output, target_name)
78
81
 
79
82
  tag = f"{f_tag}\t action={idx + 1}\t 保存于 {out_path}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py-img-processor
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: Image editor using Python and Pillow.
5
5
  Home-page: https://github.com/SkylerHu/py-img-processor.git
6
6
  Author: SkylerHu
@@ -23,6 +23,7 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: py-enum>=1.1.1
25
25
  Requires-Dist: Pillow>=8
26
+ Requires-Dist: typing_extensions
26
27
 
27
28
  # py-img-processor
28
29
 
@@ -75,6 +76,12 @@ Image editor using Python and Pillow.
75
76
  > `注意`:`PROCESSOR_TEXT_FONT` 字体的设置是文字水印必要参数,需保证系统已安装该字体。默认值 `Arial Unicode.ttf` 是MacOS系统存在的字体,建议设置字体文件路径。
76
77
 
77
78
  ## 2.2 图像处理
79
+
80
+ 测试图片 `lenna-400x225.jpg` (像素400x225)
81
+
82
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225.jpg)
83
+
84
+
78
85
  ### 处理函数
79
86
  `process_image_by_path(input_path, out_path, params)`
80
87
 
@@ -97,13 +104,17 @@ from imgprocessor.utils import base64url_encode
97
104
  from imgprocessor.processor import process_image_by_path
98
105
 
99
106
  process_image_by_path(
100
- "tests/imgs/lenna-400x225.jpg",
107
+ "docs/imgs/lenna-400x225.jpg",
101
108
  "/tmp/output.png",
102
109
  # 对图片缩放、裁剪、生成圆角、并转成png存储
103
- "resize,s_1080/crop,w_700,h_700//watermark,text_{base64url_encode('Hello 世界')}/circle,r_10/format,png",
110
+ f"resize,s_200/crop,w_200,h_200,g_center/watermark,text_{base64url_encode('Hello 世界')},color_FFF,size_20/circle,r_10/format,png",
104
111
  )
105
112
  ```
106
113
 
114
+ 输出图像 (像素200x200):
115
+
116
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-edit.png)
117
+
107
118
  ### 图像处理参数为JSON
108
119
  - 只是形式不同,参数和字符串形式无本质区别;
109
120
  - `format`、`quality`、`interlace`三个值在JSON第一层,直接按照`key: value`的形式设置;
@@ -111,14 +122,14 @@ process_image_by_path(
111
122
 
112
123
  ```python
113
124
  process_image_by_path(
114
- "tests/imgs/lenna-400x225.jpg",
125
+ "docs/imgs/lenna-400x225.jpg",
115
126
  "/tmp/output.png",
116
127
  {
117
128
  "actions": [
118
- {"key": "resize", "s": 1080},
119
- {"key": "crop", "w": 700, "h": 700},
129
+ {"key": "resize", "s": 200},
130
+ {"key": "crop", "w": 200, "h": 200, "g": "center"},
120
131
  # JSON形式参数, text无需encode
121
- {"key": "watermark", "text": "Hello 世界"},
132
+ {"key": "watermark", "text": "Hello 世界", "color": "FFF", "size": 20},
122
133
  {"key": "circle", "r": 10},
123
134
  ],
124
135
  "format": "png",
@@ -149,16 +160,26 @@ optional arguments:
149
160
  示例:
150
161
  ```shell
151
162
  # 对单个图像进行多个操作,actions有2个参数,会输出2个图像文件
152
- img-processor -P tests/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_300 circle,r_100 --overwrite
163
+ img-processor -P docs/imgs/lenna-400x225.jpg -O /tmp/ --action resize,s_200/format,webp resize,s_225/crop,w_225,h_225,g_center/circle/format,png --overwrite
153
164
  ```
154
165
 
155
166
  > 注意:action参数仅支持字符串表达形式。
156
167
 
168
+ 会输出2个图像文件:
169
+
170
+ `/tmp/lenna-400x225-0.webp` (像素355x200)
171
+
172
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-0.webp)
173
+
174
+ `/tmp/lenna-400x225-1.png` (像素225x225)
175
+
176
+ ![](https://github.com/SkylerHu/py-img-processor/blob/master/docs/imgs/lenna-400x225-1.png)
177
+
157
178
 
158
179
  ## 提取图像主色调
159
180
  ```python
160
181
  from imgprocessor.processor import extract_main_color
161
182
 
162
- extract_main_color("tests/imgs/lenna-400x225.jpg")
183
+ extract_main_color("docs/imgs/lenna-400x225.jpg")
163
184
  # 输出: "905C4C"
164
185
  ```
@@ -1,2 +1,3 @@
1
1
  py-enum>=1.1.1
2
2
  Pillow>=8
3
+ typing_extensions
@@ -41,6 +41,7 @@ setup(
41
41
  install_requires=[
42
42
  "py-enum>=1.1.1",
43
43
  "Pillow>=8",
44
+ "typing_extensions",
44
45
  ],
45
46
  python_requires=">=3.9",
46
47
  classifiers=[