-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathlsr.py
More file actions
73 lines (64 loc) · 1.64 KB
/
lsr.py
File metadata and controls
73 lines (64 loc) · 1.64 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
"""Do file io - LSR."""
from __future__ import annotations
from pathlib import Path
from layeredimage.io.common import expandLayer
from layeredimage.layeredimage import LayeredImage
from layeredimage.layergroup import Group, Layer
## LSR ##
def openLayer_LSR(file: str) -> LayeredImage:
"""Open a .lsr file into a layered image."""
import pylsr
project = pylsr.read(file)
groups = []
for group in project.layers:
groups.append(
Group(
name=group.name,
layers=[
Layer(
name=layer.name,
image=layer.scaledImage(),
dimensions=layer.scaledImage().size,
)
for layer in group.images
],
dimensions=group.size,
offsets=(int(group.offsets()[0]), int(group.offsets()[1])),
)
)
return LayeredImage(groups, project.size)
def saveLayer_LSR(fileName: str, layeredImage: LayeredImage) -> None:
"""Save a layered image as .lsr."""
import pylsr
layers = []
for group in layeredImage.layersAndGroups:
if isinstance(group, Layer):
imageData = [pylsr.LSRImageData(group.image, group.name)]
else:
imageData = [
pylsr.LSRImageData(
expandLayer(
dimensions=group.dimensions,
foreground=layer.image,
opacity=layer.opacity,
offsets=layer.offsets,
),
layer.name,
)
for layer in group.layers
]
layers.append(
pylsr.LSRLayer(
imageData,
group.name,
group.dimensions,
(
group.offsets[0] + group.dimensions[0] // 2,
group.offsets[1] + group.dimensions[1] // 2,
),
)
)
lsrImage = pylsr.LSRImage(
size=layeredImage.dimensions, name=Path(fileName).name.replace(".lsr", ""), layers=layers
)
pylsr.write(fileName, lsrImage)