INNER CODE UNIT · Python
frame_seconds
unitedrhino/things · scripts/generate-energy-demo-svg.py:81
frame_seconds = 1 / FRAME_RATE
visible_until = frame_seconds / demo.duration
lines = [
'<?xml version="1.0" encoding="UTF-8"?>',
f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {width} {height}" role="img" aria-label="智慧能源数字孪生演示">',
f' <rect width="{width}" height="{height}" fill="#0b1725"/>',
]
for index, frame in enumerate(frames):
encoded = base64.b64encode(frame.read_bytes()).decode("ascii")
base_visibility = "visible" if index == 0 else "hidden"
begin = index * frame_seconds
lines.extend(
[
f' <image width="{width}" height="{height}" visibility="{base_visibility}" href="data:image/jpeg;base64,{encoded}">',
(
' <animate attributeName="visibility" '
f'values="visible;hidden;hidden" keyTimes="0;{visible_until:.8f};1" '
f'begin="{begin:.1f}s" dur="{demo.duration}s" repeatCount="indefinite" calcMode="discrete"/>'