cysamurai 2 months ago
parent e201182b62
commit 5fe44f354e

@ -49,9 +49,7 @@
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
"icons/256x256.png"
]
}
}

@ -55,9 +55,7 @@
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
"icons/256x256.png"
]
}
}

@ -192,6 +192,58 @@ build_one_target() {
(cd "$abs_project" && npm run "$npm_cmd")
}
ensure_tauri_icons() {
local project_dir="$1"
local icons_dir="$REPO_ROOT/$project_dir/src-tauri/icons"
mkdir -p "$icons_dir"
if [[ -f "$icons_dir/32x32.png" && -f "$icons_dir/128x128.png" && -f "$icons_dir/256x256.png" ]]; then
return 0
fi
echo "==> [$project_dir] 生成默认图标资源32/128/256"
python3 - "$icons_dir" "$project_dir" <<'PY'
import binascii
import os
import struct
import sys
import zlib
icons_dir = sys.argv[1]
project_name = sys.argv[2]
if "broadcast" in project_name:
color = (16, 185, 129) # green
else:
color = (37, 99, 235) # blue
def png_chunk(tag: bytes, data: bytes) -> bytes:
return (
struct.pack("!I", len(data))
+ tag
+ data
+ struct.pack("!I", binascii.crc32(tag + data) & 0xFFFFFFFF)
)
def write_png(path: str, size: int, rgb: tuple[int, int, int]) -> None:
row = bytes(rgb) * size
raw = b"".join(b"\x00" + row for _ in range(size))
ihdr = struct.pack("!IIBBBBB", size, size, 8, 2, 0, 0, 0)
idat = zlib.compress(raw, 9)
png = (
b"\x89PNG\r\n\x1a\n"
+ png_chunk(b"IHDR", ihdr)
+ png_chunk(b"IDAT", idat)
+ png_chunk(b"IEND", b"")
)
with open(path, "wb") as f:
f.write(png)
for size in (32, 128, 256):
write_png(os.path.join(icons_dir, f"{size}x{size}.png"), size, color)
PY
}
collect_debs() {
local project_dir="$1"
local arch_label="$2"
@ -217,6 +269,7 @@ collect_debs() {
build_project() {
local project_dir="$1"
ensure_tauri_icons "$project_dir"
if [[ "$BUILD_ARCH" == "all" || "$BUILD_ARCH" == "amd64" ]]; then
echo ""
echo "######## $project_dir: amd64 ########"

Loading…
Cancel
Save