<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>元数据 on Time Friend</title><link>https://time-friend.com/zh/tags/%E5%85%83%E6%95%B0%E6%8D%AE/</link><description>Recent content in 元数据 on Time Friend</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 08 Sep 2026 16:00:00 +0000</lastBuildDate><atom:link href="https://time-friend.com/zh/tags/%E5%85%83%E6%95%B0%E6%8D%AE/index.xml" rel="self" type="application/rss+xml"/><item><title>掌机前端的媒体数据管理: SteamGridDB 封面抓取、图片规格与元数据源选择</title><link>https://time-friend.com/zh/archive/handheld-media-data-management/</link><pubDate>Tue, 08 Sep 2026 16:00:00 +0000</pubDate><guid>https://time-friend.com/zh/archive/handheld-media-data-management/</guid><description>&lt;p&gt;掌机前端 iiSU 的界面是那种偏视觉的样式: 进游戏库是一格格方形封面, 选中某个游戏后整个背景换成一张横版大图, 大图正中再浮着游戏的文字 logo。我这个库里有四十多个 Switch 游戏, 一开始封面缺了一大半, 有图的也尺寸、比例、透明通道各不相同; 标题、发行信息这些元数据同样是缺的。手动去网上找图、一张张裁、再一个个填, 换到第十个游戏我就放弃了, 于是把它写成了一条批量流水线。封面和元数据看起来是两件事, 其实都是同一类活: 把外部的媒体数据整理成前端能直接用的格式。&lt;/p&gt;
&lt;h2 id="前端要的三张图-各管一块界面"&gt;前端要的三张图, 各管一块界面&lt;/h2&gt;
&lt;p&gt;最开始的误区是把三种图当成同一种封面。实际上它们各管界面的一块区域, 规格也不一样。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;icon.png&lt;/code&gt; 是方格列表里那张方形封面, 也是游戏卡片的主图, 规格是 512×512、不透明的 RGB。&lt;code&gt;hero_1.jpg&lt;/code&gt; 是选中游戏后的全屏背景, 横版 16:9, 我统一成 1280×720, 居中裁剪, 避免拉伸变形。&lt;code&gt;title.png&lt;/code&gt; 最容易被搞错——它&lt;strong&gt;不是封面&lt;/strong&gt;, 而是浮在背景之上的文字 logo 浮层, 必须是透明背景的 PNG(RGBA), 只在游戏 logo 处不透明, 同样 1280×720。&lt;/p&gt;
&lt;p&gt;分辨方法很直接: 把这张图单独放在白底上看。如果它占满整张、有背景色, 那就是封面; 如果只有中间一行游戏名字、四周透明, 那是 logo 浮层。这个区分做对了, 界面才不会出现&amp;quot;方形 logo 糊在背景中间&amp;quot;或者&amp;quot;背景被拉成方块&amp;quot;的怪样子。有些游戏在 SteamGridDB 上根本没有横版 logo, 硬塞一张方形的进去只会变成中间一块糊图, 这种情况我干脆删掉 &lt;code&gt;title.png&lt;/code&gt;, 让它不显示浮层, 反而干净。&lt;/p&gt;


&lt;div class="mermaid-wrap"&gt;
&lt;pre class="mermaid" role="img" aria-label="Mermaid diagram"&gt;flowchart TB
 A[&amp;#34;ROM 目录名 / TitleID&amp;#34;] --&amp;gt; B[&amp;#34;SteamGridDB API&amp;lt;br/&amp;gt;grids / logos / heroes&amp;#34;]
 B --&amp;gt; C[&amp;#34;下载原图&amp;#34;]
 C --&amp;gt; D[&amp;#34;统一规格&amp;lt;br/&amp;gt;居中裁剪 / 去黑图 / 透明通道&amp;#34;]
 D --&amp;gt; E[&amp;#34;adb push 到&amp;lt;br/&amp;gt;consoles/&amp;amp;lt;平台&amp;amp;gt;/&amp;amp;lt;ROM名&amp;amp;gt;/&amp;#34;]
 E --&amp;gt; F[&amp;#34;删除 rom_asset_index.fb&amp;lt;br/&amp;gt;重启前端重建索引&amp;#34;]&lt;/pre&gt;
&lt;/div&gt;


&lt;script type="module"&gt;
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
mermaid.initialize({
 startOnLoad: false,
 theme: 'base',
 themeVariables: {
 background: '#1d1f21',
 primaryColor: '#282c34',
 primaryBorderColor: '#3e4147',
 primaryTextColor: '#c9cacc',
 lineColor: '#5a5f66',
 edgeLabelBackground: '#1d1f21'
 }
});
mermaid.run({ querySelector: 'pre.mermaid' });
&lt;/script&gt;


&lt;h2 id="steamgriddb-的三个端点"&gt;SteamGridDB 的三个端点&lt;/h2&gt;
&lt;p&gt;三种图对应 SteamGridDB 的三个资源端点, 用同一个游戏 ID 分别请求。方形封面走 &lt;code&gt;grids/game/{id}&lt;/code&gt; 并带上 &lt;code&gt;types=static&amp;amp;dimensions=512x512&lt;/code&gt;, 直接拿到接近目标规格的方图; 透明文字 logo 走 &lt;code&gt;logos/game/{id}&lt;/code&gt;, 这里要注意挑&lt;strong&gt;横版比例大于 1.8&lt;/strong&gt; 的那张, 否则会拿到偏方形的 logo, 浮在背景上很难看; 背景横幅走 &lt;code&gt;heroes/game/{id}&lt;/code&gt;, 原始图通常是 1920×620, 需要自己裁成 16:9。&lt;/p&gt;</description></item></channel></rss>