pixel-icon-web/php/generate-preview.php

50 lines
1.3 KiB
PHP
Raw Normal View History

2024-11-15 17:55:31 +08:00
<?php
function generate_preview ($icon_path, $preview_path) {
$image = new Imagick();
$image->setBackgroundColor(new ImagickPixel('#ffffff'));
$image->readImageBlob(file_get_contents($icon_path));
$image->setImageFormat("png24");
$image->setImageInterpolateMethod(Imagick::INTERPOLATE_INTEGER);
$image->resizeImage(180, 180, Imagick::FILTER_POINT, 1);
$image->borderImage('#ffffff', 510, 225);
$image->writeImage($preview_path);
}
$current_icon = false;
if (isset($argv[1])) {
$current_icon = $argv[1];
} elseif (isset($_GET['icon'])) {
$current_icon = $_GET['icon'];
}
$icon_dir = __DIR__."/icons";
$preview_dir = __DIR__."/preview";
if ($current_icon) {
$icon_path = "$icon_dir/$current_icon.svg";
$preview_path = "$preview_dir/$current_icon.png";
generate_preview($icon_path, $preview_path);
} else {
// no icon specified, generate all
$icon_json = json_decode(file_get_contents(__DIR__ . "/assets/icons.json"), true);
foreach ($icon_json as $filename => $tags) {
$icon_name = str_replace(".svg", "", $filename);
$icon_path = "$icon_dir/$filename";
$preview_path = "$preview_dir/$icon_name.png";
if (is_file($preview_path) && filemtime($preview_path) > filemtime($icon_path)) {
continue;
}
generate_preview($icon_path, $preview_path);
}
$file = fopen(__DIR__ . "/last_generate", "w");
fwrite($file, time());
fclose($file);
}