mirror of https://github.com/wanadev/yoga.git
Add options for quantization
This commit is contained in:
parent
83f0edad70
commit
9897107a66
|
@ -65,6 +65,33 @@ class Test_normalize_options(object):
|
|||
("png_slow_optimization", 0, False),
|
||||
("png_slow_optimization", "", False),
|
||||
("png_slow_optimization", b"", False),
|
||||
# enable_quantization
|
||||
("enable_quantization", True, True),
|
||||
("enable_quantization", False, False),
|
||||
("enable_quantization", 1, True),
|
||||
("enable_quantization", 0, False),
|
||||
("enable_quantization", "", False),
|
||||
("enable_quantization", b"", False),
|
||||
# quantization_dithering_level
|
||||
("quantization_dithering_level", 0.42, 0.42),
|
||||
("quantization_dithering_level", 42, 1.0),
|
||||
("quantization_dithering_level", "0.42", 0.42),
|
||||
("quantization_dithering_level", ".42", 0.42),
|
||||
("quantization_dithering_level", "42", 1.0),
|
||||
("quantization_dithering_level", b"0.42", 0.42),
|
||||
("quantization_dithering_level", b".42", 0.42),
|
||||
("quantization_dithering_level", b"42", 1.0),
|
||||
("quantization_dithering_level", -1, 0.0),
|
||||
# quantization_max_colors
|
||||
("quantization_max_colors", 128, 128),
|
||||
("quantization_max_colors", 128.5, 128),
|
||||
("quantization_max_colors", "128", 128),
|
||||
("quantization_max_colors", "128.5", 128),
|
||||
("quantization_max_colors", "255", 255),
|
||||
("quantization_max_colors", 300, 256),
|
||||
("quantization_max_colors", "300", 256),
|
||||
("quantization_max_colors", b"255", 255),
|
||||
("quantization_max_colors", 0, 1),
|
||||
],
|
||||
)
|
||||
def test_options(self, option_name, input_, output):
|
||||
|
|
|
@ -3,12 +3,15 @@ import re
|
|||
|
||||
# fmt: off
|
||||
DEFAULT_OPTIONS = {
|
||||
"output_format": "orig", # orig|auto|jpeg|png|webp|webpl
|
||||
"resize": "orig", # orig|[w,h]
|
||||
"jpeg_quality": 0.84, # 0.00-1.00
|
||||
"webp_quality": 0.90, # 0.00-1.00
|
||||
"opacity_threshold": 254, # 0-255
|
||||
"png_slow_optimization": False, # True|False
|
||||
"output_format": "orig", # orig|auto|jpeg|png|webp|webpl
|
||||
"resize": "orig", # orig|[w,h]
|
||||
"jpeg_quality": 0.84, # 0.00-1.00
|
||||
"webp_quality": 0.90, # 0.00-1.00
|
||||
"opacity_threshold": 254, # 0-255
|
||||
"png_slow_optimization": False, # True|False
|
||||
"enable_quantization": False, # True|False
|
||||
"quantization_dithering_level": 1.0, # 0.00-1.00
|
||||
"quantization_max_colors": 256, # 1-256
|
||||
}
|
||||
# fmt: on
|
||||
|
||||
|
@ -130,4 +133,39 @@ def normalize_options(options=None):
|
|||
options["png_slow_optimization"]
|
||||
)
|
||||
|
||||
# "" -> False
|
||||
# 0 -> False
|
||||
# 1 -> True
|
||||
if "enable_quantization" in options:
|
||||
result["enable_quantization"] = bool(options["enable_quantization"])
|
||||
|
||||
# > 1.0 -> 1.0
|
||||
# < 0.0 -> 0.0
|
||||
# "0.5" -> 0.5
|
||||
if "quantization_dithering_level" in options:
|
||||
value = options["quantization_dithering_level"]
|
||||
|
||||
if type(value) in (str, bytes):
|
||||
value = float(value)
|
||||
|
||||
value = max(value, 0.0)
|
||||
value = min(value, 1.0)
|
||||
|
||||
result["quantization_dithering_level"] = value
|
||||
|
||||
# > 256 -> 256
|
||||
# < 1 -> 1
|
||||
# "128" -> 128
|
||||
# 128.5 -> 128
|
||||
if "quantization_max_colors" in options:
|
||||
value = options["quantization_max_colors"]
|
||||
|
||||
if type(value) in (str, bytes):
|
||||
value = float(value)
|
||||
|
||||
value = max(value, 1)
|
||||
value = min(value, 256)
|
||||
|
||||
result["quantization_max_colors"] = int(value)
|
||||
|
||||
return result
|
||||
|
|
Loading…
Reference in New Issue