-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path__init__.py
More file actions
116 lines (96 loc) · 2.99 KB
/
__init__.py
File metadata and controls
116 lines (96 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"""Do file io."""
from __future__ import annotations
from pathlib import Path
from loguru import logger
from layeredimage.io.gif import openLayer_GIF, saveLayer_GIF
from layeredimage.io.layered import (
openLayer_LAYERED,
openLayer_LAYEREDC,
saveLayer_LAYERED,
saveLayer_LAYEREDC,
)
from layeredimage.io.lsr import openLayer_LSR, saveLayer_LSR
from layeredimage.io.ora import openLayer_ORA, saveLayer_ORA
from layeredimage.io.pdn import openLayer_PDN, saveLayer_PDN
from layeredimage.io.psd import openLayer_PSD, saveLayer_PSD
from layeredimage.io.tiff import openLayer_TIFF, saveLayer_TIFF
from layeredimage.io.webp import openLayer_WEBP, saveLayer_WEBP
from layeredimage.io.xcf import openLayer_XCF, saveLayer_XCF
from layeredimage.layeredimage import LayeredImage
def extNotRecognised(fileName: str) -> None:
"""Output the file extension not recognised error."""
exts = ["ora", "psd", "xcf", "pdn", "tif", "tiff", "webp", "gif", "lsr", "layered", "layeredc"]
logger.error(
".File extension is not recognised for file! Must be one of " + ', "'.join(exts) + '"',
extra={"fileName": fileName},
)
def openLayerImage(file: str | Path) -> LayeredImage:
"""Open a layer image file into a layer image object.
Args:
----
file (str): path/ filename
Raises:
------
FileExistsError: If the layered image does not exist
ValueError: If the extention is not recognised
Returns:
-------
LayeredImage: a layered image object
"""
functionMap = {
".ora": openLayer_ORA,
".psd": openLayer_PSD,
".xcf": openLayer_XCF,
".pdn": openLayer_PDN,
".tif": openLayer_TIFF,
".tiff": openLayer_TIFF,
".webp": openLayer_WEBP,
".gif": openLayer_GIF,
".lsr": openLayer_LSR,
".layered": openLayer_LAYERED,
".layeredc": openLayer_LAYEREDC,
}
fp = Path(file)
if not fp.is_file():
logger.error("File does not exist", extra={"file": file})
raise FileExistsError
fileExt = fp.suffix.lower()
if fileExt not in functionMap:
extNotRecognised(fp.name)
raise ValueError
return functionMap[fileExt](fp.as_posix())
def saveLayerImage(fileName: str | Path, layeredImage: LayeredImage) -> None:
"""Save a layered image to a file.
Args:
----
fileName (str): path/ filename
layeredImage (LayeredImage): the layered image to save
Raises:
------
ValueError: If the extention is not recognised
Returns:
-------
None
"""
functionMap = {
".ora": saveLayer_ORA,
".psd": saveLayer_PSD,
".xcf": saveLayer_XCF,
".pdn": saveLayer_PDN,
".tif": saveLayer_TIFF,
".tiff": saveLayer_TIFF,
".webp": saveLayer_WEBP,
".gif": saveLayer_GIF,
".lsr": saveLayer_LSR,
".layered": saveLayer_LAYERED,
".layeredc": saveLayer_LAYEREDC,
}
pth = Path(fileName)
fileExt = pth.suffix.lower()
if fileExt not in functionMap:
extNotRecognised(pth.name)
raise ValueError
return functionMap[fileExt](pth.as_posix(), layeredImage)
def exportFlatImage(fileName: str, layeredImage: LayeredImage) -> None:
"""Export the layered image to a unilayer image file."""
layeredImage.getFlattenLayers().save(fileName)