@jjlmoya/utils-games-development 1.55.0 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +1 -0
  4. package/src/tests/contrast_legibility.test.ts +56 -10
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/localizationSanitizer/localization-sanitizer.css +4 -2
  8. package/src/tool/pixelArtPaletteSwapper/app-client.ts +229 -0
  9. package/src/tool/pixelArtPaletteSwapper/bibliography.astro +6 -0
  10. package/src/tool/pixelArtPaletteSwapper/bibliography.ts +16 -0
  11. package/src/tool/pixelArtPaletteSwapper/component.astro +153 -0
  12. package/src/tool/pixelArtPaletteSwapper/entry.ts +28 -0
  13. package/src/tool/pixelArtPaletteSwapper/i18n/de.ts +233 -0
  14. package/src/tool/pixelArtPaletteSwapper/i18n/en.ts +233 -0
  15. package/src/tool/pixelArtPaletteSwapper/i18n/es.ts +233 -0
  16. package/src/tool/pixelArtPaletteSwapper/i18n/fr.ts +233 -0
  17. package/src/tool/pixelArtPaletteSwapper/i18n/id.ts +233 -0
  18. package/src/tool/pixelArtPaletteSwapper/i18n/it.ts +233 -0
  19. package/src/tool/pixelArtPaletteSwapper/i18n/ja.ts +225 -0
  20. package/src/tool/pixelArtPaletteSwapper/i18n/ko.ts +225 -0
  21. package/src/tool/pixelArtPaletteSwapper/i18n/nl.ts +233 -0
  22. package/src/tool/pixelArtPaletteSwapper/i18n/pl.ts +233 -0
  23. package/src/tool/pixelArtPaletteSwapper/i18n/pt.ts +233 -0
  24. package/src/tool/pixelArtPaletteSwapper/i18n/ru.ts +233 -0
  25. package/src/tool/pixelArtPaletteSwapper/i18n/sv.ts +233 -0
  26. package/src/tool/pixelArtPaletteSwapper/i18n/tr.ts +233 -0
  27. package/src/tool/pixelArtPaletteSwapper/i18n/zh.ts +225 -0
  28. package/src/tool/pixelArtPaletteSwapper/index.ts +12 -0
  29. package/src/tool/pixelArtPaletteSwapper/logic.test.ts +43 -0
  30. package/src/tool/pixelArtPaletteSwapper/logic.ts +171 -0
  31. package/src/tool/pixelArtPaletteSwapper/pixel-art-palette-swapper.css +728 -0
  32. package/src/tool/pixelArtPaletteSwapper/seo.astro +15 -0
  33. package/src/tool/pixelArtPaletteSwapper/ui.ts +35 -0
  34. package/src/tool/retroSfxGenerator/client.ts +9 -2
  35. package/src/tool/retroSfxGenerator/logic.test.ts +21 -0
  36. package/src/tool/retroSfxGenerator/logic.ts +1 -1
  37. package/src/tool/retroSfxGenerator/retro-sfx-generator.css +10 -4
  38. package/src/tools.ts +2 -0
@@ -0,0 +1,233 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'konverter-palitry-pixel-art',
6
+ title: 'Конвертер Палитры для Пиксель Арта',
7
+ description: 'Уменьшайте палитру спрайтов и спрайтшитов до классических консольных цветов или собственных hex-значений прямо в браузере.',
8
+ ui: {
9
+ uploadTitle: 'Перетащите спрайт или спрайтшит',
10
+ uploadHint: 'Файлы PNG, JPEG или WebP обрабатываются локально',
11
+ chooseImage: 'Выбрать изображение',
12
+ replaceImage: 'Заменить изображение',
13
+ paletteTitle: 'Выберите палитру',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'В стиле NES',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'Собственные цвета',
20
+ customPaletteHint: 'Разделяйте hex-коды запятыми, пробелами или переносами строк.',
21
+ applyCustomPalette: 'Применить палитру',
22
+ resetCustomPalette: 'Сбросить',
23
+ sourcePreview: 'Оригинал',
24
+ resultPreview: 'Ограниченный результат',
25
+ waitingForImage: 'Ожидание изображения',
26
+ uploadToPreview: 'Загрузите изображение для предпросмотра',
27
+ resultEmpty: 'Оригинальная и обработанная версии появятся рядом.',
28
+ downloadPng: 'Скачать PNG',
29
+ downloadDisabled: 'Загрузите изображение для экспорта.',
30
+ colorCount: 'Исходные цвета',
31
+ mappedCount: 'Использовано цветов',
32
+ imageSize: 'Размер изображения',
33
+ paletteCount: 'цветов в палитре',
34
+ preserveAlpha: 'Сохранять прозрачность',
35
+ zoomLabel: 'Масштаб',
36
+ processing: 'Пиксели обрабатываются',
37
+ invalidPalette: 'Добавьте хотя бы один корректный hex-код',
38
+ invalidImage: 'Выберите файл PNG, JPEG или WebP',
39
+ readyStatus: 'Готово',
40
+ dropActive: 'Отпустите для загрузки',
41
+ mappedSummary: 'Сконвертировано {source} исходных цветов в {mapped} цветов палитры',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'Превратите Полноцветный Спрайт в Продуманную Ретро Палитру',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: 'Ограниченная палитра - это больше, чем просто техническое ограничение. Она дает спрайту узнаваемый цветовой язык, помогает элементам сцены выглядеть единым целым и передает визуальный характер конкретной ретро-консоли или классической платформы. Этот браузерный инструмент позволяет сравнивать исходное изображение с обработанным при экспериментировании с палитрами Game Boy, NES, PICO-8, Commodore 64, DawnBringer 16 и пользовательскими наборами.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Как Работает Преобразование по Ближайшему Цвету',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: 'Инструмент считывает красный, зеленый и синий каналы каждого видимого пикселя и сравнивает этот цвет с каждым значением в выбранной палитре. Он выбирает элемент палитры с наименьшим квадратичным расстоянием RGB и записывает заменяющий цвет в новый буфер холста. Альфа-канал обрабатывается отдельно, благодаря чему прозрачные пиксели остаются прозрачными, а полупрозрачные края сохраняют свою исходную непрозрачность при включенном параметре Сохранять прозрачность.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'Ограничение палитры',
68
+ description: 'Каждый исходный цвет заменяется ближайшим доступным образцом.',
69
+ points: [
70
+ 'Быстро и предсказуемо для спрайтов, иконок, тайлов и элементов интерфейса',
71
+ 'Точно сохраняет исходные размеры и координаты пикселей',
72
+ 'Облегчает контроль и проверку заданного цветового бюджета',
73
+ ],
74
+ },
75
+ {
76
+ title: 'Смена палитры (Palette Swapping)',
77
+ description: 'Одно и то же изображение можно перераспределить на другой тщательно подобранный набор цветов.',
78
+ points: [
79
+ 'Удобно для альтернативных костюмов, смены биомов и состояний урона',
80
+ 'Пользовательские списки hex-кодов позволяют точно следовать вашей арт-дирекции',
81
+ 'Скачанный файл PNG сразу готов к повторному импорту в ваш графический редактор',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Выбор Палитры для Пиксель Арта',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Палитра', 'Цвета', 'Назначение', 'Особенности'],
94
+ rows: [
95
+ ['Game Boy', '4', 'Монохромная стилистика портативной консоли и выразительная светотень', 'Узкий диапазон тонов может сливать близкие по цвету материалы'],
96
+ ['В стиле NES', '16', 'Выразительные аркадные спрайты, персонажи и тайлы', 'Очень яркие тона могут перекрывать мелкие детали'],
97
+ ['PICO-8', '16', 'Современный пиксель-арт с saturated акцентами', 'Насыщенные оттенки требуют продуманного контраста'],
98
+ ['Commodore 64', '16', 'Мягкие ретро-сцены и эстетика классических компьютерных игр', 'Низкий контраст выигрывает от четких силуэтов'],
99
+ ['DawnBringer 16', '16', 'Универсальная художественная палитра для пиксель-арта', 'Градационные рампы все еще требуют четкого направления света'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'Практический Процесс Работы со Спрайтшитами',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Начните с самого крупного исходного изображения, которое вам удобно редактировать, и загрузите экспортированный спрайт или спрайтшит сюда. Выберите пресет для задания стиля или вставьте пользовательский список из библиотеки палитр. Проверьте оба холста при большем увеличении на предмет утерянных черт лица, слившихся контуров или бликов. Если результат выглядит размытым, попробуйте палитру с более резкими шагами тонов или добавьте один акцентный цвет.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: 'Подходите к Палитре Осознанно',
114
+ html: 'Больший список цветов не означает автоматическое улучшение. Начните с 4-16 цветов, назначьте каждому цвету четкую роль и приберегите самые яркие значения для ключевых точек или читаемых бликов. Алгоритм ближайшего цвета сохраняет позиции пикселей, но не может решить, какие цвета должны выстраивать визуальную иерархию вашего спрайта.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: 'Чек-лист Экспорта Пиксель Арта',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'Перед Импортом Обработанного Файла PNG',
125
+ html: 'Проверьте результат в масштабе 100 процентов и в итоговом игровом размере, убедитесь, что прозрачные края остаются чистыми, проверьте читаемость важных силуэтов и сохраните исходный файл рядом с экспортированным, чтобы иметь возможность скорректировать палитру без необходимости начинать заново.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'Квантование цвета',
132
+ definition: 'Процесс сокращения большого набора исходных цветов до более мелкого, четко определенного набора.',
133
+ },
134
+ {
135
+ term: 'Цветовая рампа',
136
+ definition: 'Упорядоченная последовательность темных, средних и светлых оттенков, используемая для построения объема.',
137
+ },
138
+ {
139
+ term: 'Индексированная палитра',
140
+ definition: 'Компактная таблица цветов, в которой пиксели ссылаются на индексы в общем списке вместо повторного сохранения полных значений.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: 'Загружает ли инструмент мои изображения на сервер?',
148
+ answer: 'Нет. Изображение декодируется на холсте в вашем браузере, обрабатывается локально с помощью JavaScript и экспортируется напрямую в формат PNG. Утилита не содержит этапа загрузки на сервер.',
149
+ },
150
+ {
151
+ question: 'Могу ли я использовать собственную палитру?',
152
+ answer: 'Да. Вставьте 6-значные или 3-значные hex-коды в поле Собственные цвета, разделяя их запятыми, пробелами или переносами строк, а затем нажмите Применить палитру.',
153
+ },
154
+ {
155
+ question: 'Изменяет ли инструмент размер спрайта или спрайтшита?',
156
+ answer: 'Нет. Итоговый файл сохраняет исходную ширину, высоту, координаты пикселей и значения альфа-канала при включенном параметре Сохранять прозрачность.',
157
+ },
158
+ {
159
+ question: 'Какой алгоритм используется?',
160
+ answer: 'Каждый видимый пиксель сопоставляется с ближайшим цветом в выбранной палитре с использованием квадратичного евклидова расстояния в пространстве RGB. Это быстрый, детерминированный и наглядный метод, который не применяет дизеринг или перцептивную цветокоррекцию Lab.',
161
+ },
162
+ ],
163
+ howTo: [
164
+ {
165
+ name: 'Загрузить спрайт',
166
+ text: 'Перетащите спрайт или спрайтшит PNG, JPEG или WebP в рабочую область или используйте кнопку Выбрать изображение.',
167
+ },
168
+ {
169
+ name: 'Выбрать палитру',
170
+ text: 'Выберите классический пресет или введите собственные hex-коды. Результат обновится мгновенно при применении палитры.',
171
+ },
172
+ {
173
+ name: 'Сравнить и экспортировать',
174
+ text: 'Оцените оригинальный и обработанный холст, отрегулируйте масштаб предпросмотра и скачайте результат в формате PNG.',
175
+ },
176
+ ],
177
+ schemas: [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'SoftwareApplication',
181
+ name: 'Конвертер Палитры для Пиксель Арта',
182
+ applicationCategory: 'DesignApplication',
183
+ operatingSystem: 'Any',
184
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
185
+ },
186
+ {
187
+ '@context': 'https://schema.org',
188
+ '@type': 'FAQPage',
189
+ mainEntity: [
190
+ {
191
+ '@type': 'Question',
192
+ name: 'Загружает ли инструмент мои изображения на сервер?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'Нет. Изображение обрабатывается локально в браузере и экспортируется напрямую в PNG.',
196
+ },
197
+ },
198
+ {
199
+ '@type': 'Question',
200
+ name: 'Могу ли я использовать собственную палитру?',
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: 'Да. Введите hex-коды в поле Собственные цвета и нажмите Применить палитру.',
204
+ },
205
+ },
206
+ ],
207
+ },
208
+ {
209
+ '@context': 'https://schema.org',
210
+ '@type': 'HowTo',
211
+ name: 'Как конвертировать спрайт в ретро палитру',
212
+ step: [
213
+ { '@type': 'HowToStep', name: 'Загрузить спрайт', text: 'Перетащите файл в рабочую область.' },
214
+ { '@type': 'HowToStep', name: 'Выбрать палитру', text: 'Выберите пресет или укажите свои цвета.' },
215
+ { '@type': 'HowToStep', name: 'Сравнить и экспортировать', text: 'Оцените результат и скачайте PNG.' },
216
+ ],
217
+ },
218
+ ],
219
+ bibliography: [
220
+ {
221
+ name: 'MDN Canvas API',
222
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
223
+ },
224
+ {
225
+ name: 'Lospec Palette List',
226
+ url: 'https://lospec.com/palette-list',
227
+ },
228
+ {
229
+ name: 'W3C Portable Network Graphics Specification',
230
+ url: 'https://www.w3.org/TR/png-3/',
231
+ },
232
+ ],
233
+ };
@@ -0,0 +1,233 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'pixel-art-palett-bytare',
6
+ title: 'Pixel Art Palettbytare',
7
+ description: 'Minska sprites och spritesheets till klassiska konsolpaletter eller egna hex-färger direkt i webbläsaren.',
8
+ ui: {
9
+ uploadTitle: 'Släpp en sprite eller spritesheet',
10
+ uploadHint: 'PNG, JPEG eller WebP bearbetas lokalt på din enhet',
11
+ chooseImage: 'Välj bild',
12
+ replaceImage: 'Ersätt bild',
13
+ paletteTitle: 'Välj palett',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'NES-inspirerad',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'Anpassade färger',
20
+ customPaletteHint: 'Separera hex-värden med kommatecken, blanksteg eller radbrytningar.',
21
+ applyCustomPalette: 'Använd palett',
22
+ resetCustomPalette: 'Återställ',
23
+ sourcePreview: 'Original',
24
+ resultPreview: 'Minskat resultat',
25
+ waitingForImage: 'Väntar på en bild',
26
+ uploadToPreview: 'Ladda upp en bild för att förhandsgranska',
27
+ resultEmpty: 'Dina original- och reducerade versioner visas sida vid sida.',
28
+ downloadPng: 'Ladda ner PNG',
29
+ downloadDisabled: 'Ladda upp en bild för att aktivera export.',
30
+ colorCount: 'Källfärger',
31
+ mappedCount: 'Använda färger',
32
+ imageSize: 'Bildstorlek',
33
+ paletteCount: 'palettfärger',
34
+ preserveAlpha: 'Bevara transparens',
35
+ zoomLabel: 'Zoom',
36
+ processing: 'Mappar pixlar',
37
+ invalidPalette: 'Lägg till minst en giltig hex-färg',
38
+ invalidImage: 'Välj en PNG-, JPEG- eller WebP-bild',
39
+ readyStatus: 'Klar',
40
+ dropActive: 'Släpp för att ladda',
41
+ mappedSummary: 'Mappade {source} källfärger till {mapped} palettfärger',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'Omvandla en Fullfärgs Sprite till en Genomtänkt Retropalett',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: 'En begränsad palett är mer än bara en teknisk begränsning. Den ger din sprite ett enhetligt färgspråk, gör att element i en scen hör ihop och för tankarna till den visuella karaktären hos en specifik konsol eller klassisk hårdvara. Denna webbläsarbaserade palettbytare låter dig jämföra originalbilden med en reducerad version medan du experimenterar med Game Boy, NES-inspirerade, PICO-8, Commodore 64, DawnBringer 16 och anpassade paletter.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Hur Färgomvandling till Närmaste Färg Fungerar',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: 'Verktyget läser av de röda, gröna och blå kanalerna för varje synlig pixel och jämför färgen med varje färg i den valda paletten. Det väljer palettfärgen med det minsta kvadratiska RGB-avståndet och skriver ersättningsfärgen till en ny canvas-buffert. Alfakanalen hålls separat så att transparenta pixlar förblir transparenta och halvtransparenta kanter behåller sin ursprungliga opacitet när Bevara transparens är aktiverat.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'Palettbegränsning',
68
+ description: 'Varje källfärg ersätts med det närmaste tillgängliga färgprovet.',
69
+ points: [
70
+ 'Snabbt och förutsägbart för sprites, ikoner, tiles och gränssnittselement',
71
+ 'Behåller ursprungliga mått och pixelpositioner exakt',
72
+ 'Gör det enkelt att kontrollera och granska en fastställd färgbudget',
73
+ ],
74
+ },
75
+ {
76
+ title: 'Palette Swapping',
77
+ description: 'Samma bild kan mappas om till en annan noggrant utvald uppsättning färger.',
78
+ points: [
79
+ 'Användbart för alternativa dräkter, miljöer och skadestatusar',
80
+ 'Anpassade hex-listor gör att du kan matcha din egen konstnärliga riktning',
81
+ 'Den nedladdade PNG-filen är redo att importeras direkt till din redigerare',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Välja Palett för Pixel Art',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Palett', 'Färger', 'Passar till', 'Att tänka på'],
94
+ rows: [
95
+ ['Game Boy', '4', 'Monokrom bärbar känsla och tydliga valörstudier', 'Litet valörindex kan smälta samman närliggande material'],
96
+ ['NES-inspirerad', '16', 'Klassiska arkadsprites, karaktärer och tiles', 'Mycket ljusa färger kan dominera små detaljer'],
97
+ ['PICO-8', '16', 'Modern pixel art med mättade färgaccentuer', 'Starkt mättade tonfall kräver medveten kontrast'],
98
+ ['Commodore 64', '16', 'Mjuka retro-scener och klassisk datorgrafikestetik', 'Låg kontrast drar nytta av tydliga silhuetter'],
99
+ ['DawnBringer 16', '16', 'Mångsidig handplockad palett för allmän pixel art', 'Färgramper kräver fortfarande en medveten ljusriktning'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'Praktiskt Arbetsflöde för Spritesheets',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Börja med den största källbilden du kan redigera bekvämt och ladda upp den exporterade spriten eller spritesheetet här. Välj en förinställning för att bestämma en riktning eller klistra in en anpassad hex-lista. Granska båda ytorna med högre zoom för att leta efter förlorade ansiktsdrag, sammansmälta konturer eller dagrar. Om resultatet ser otydligt ut, prova en palett med större valörsteg eller lägg till en medveten accentfärg.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: 'Håll Paletten Medveten',
114
+ html: 'En större färglista är inte automatiskt bättre. Börja med 4 till 16 färger, ge varje färg en bestämd uppgift och reservera de ljusaste värdena för fokuspunkter eller tydliga dagrar. Algoritmen för närmaste färg behåller pixelpositionerna, men kan inte avgöra vilka färger som ska bära upp den visuella hierarkin i din sprite.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: 'Checklista för Export av Pixel Art',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'Före Import av den Reducerade PNG filen',
125
+ html: 'Kontrollera resultatet i 100 procent samt i spelets slutliga skala, se till att genomskinliga kanter förblir rena, kontrollera att viktiga silhuetter är läsbara och spara den ursprungliga källfilen bredvid exporten så att du kan justera paletten utan att börja om från början.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'Färgkvantisering',
132
+ definition: 'Processen att minska en stor mängd källfärger till en mindre, bestämd uppsättning.',
133
+ },
134
+ {
135
+ term: 'Färgramp',
136
+ definition: 'En ordnad sekvens av mörka, mellantoner och ljusa färger som används för att skugga en yta.',
137
+ },
138
+ {
139
+ term: 'Indexerad palett',
140
+ definition: 'En kompakt färgtabell där bildpixlar pekar på index i en gemensam lista istället för att lagra fullständiga färger upprepade gånger.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: 'Laddas mina bilder upp till en server?',
148
+ answer: 'Nej. Bilden avkodas på en canvas i din webbläsare, mappas lokalt med JavaScript och exporteras direkt som PNG. Verktyget har inget uppladdningssteg.',
149
+ },
150
+ {
151
+ question: 'Kan jag använda min egen anpassade palett?',
152
+ answer: 'Ja. Klistra in 6-siffriga eller 3-siffriga hex-koder i fältet Anpassade färger, separerade med kommatecken, blanksteg eller radbrytningar, och välj Använd palett.',
153
+ },
154
+ {
155
+ question: 'Ändras storleken på min sprite eller mitt spritesheet?',
156
+ answer: 'Nej. Utfilen behåller ursprunglig bredd, höjd, pixelpositioner och alfavärden när Bevara transparens är aktiverat.',
157
+ },
158
+ {
159
+ question: 'Vilken algoritm används?',
160
+ answer: 'Varje synlig pixel tilldelas den närmaste färgen i den valda paletten med hjälp av kvadratiskt euklidiskt avstånd i RGB-rummet. Det är snabbt, deterministiskt och enkelt att förhandsgranska, men använder inte dithering eller perceptuell Lab-färgkorrigering.',
161
+ },
162
+ ],
163
+ howTo: [
164
+ {
165
+ name: 'Ladda sprite',
166
+ text: 'Släpp en PNG-, JPEG- eller WebP-sprite eller spritesheet i arbetsområdet eller använd Välj bild.',
167
+ },
168
+ {
169
+ name: 'Välj palett',
170
+ text: 'Välj en klassisk förinställning eller ange dina egna hex-färger. Resultatet uppdateras omedelbart.',
171
+ },
172
+ {
173
+ name: 'Jämför och exportera',
174
+ text: 'Granska originalet och den reducerade bilden, justera zoomen och ladda ner resultatet som PNG.',
175
+ },
176
+ ],
177
+ schemas: [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'SoftwareApplication',
181
+ name: 'Pixel Art Palettbytare',
182
+ applicationCategory: 'DesignApplication',
183
+ operatingSystem: 'Any',
184
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
185
+ },
186
+ {
187
+ '@context': 'https://schema.org',
188
+ '@type': 'FAQPage',
189
+ mainEntity: [
190
+ {
191
+ '@type': 'Question',
192
+ name: 'Laddas mina bilder upp till en server?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'Nej. Bilden bearbetas lokalt i webbläsaren och exporteras direkt som PNG.',
196
+ },
197
+ },
198
+ {
199
+ '@type': 'Question',
200
+ name: 'Kan jag använda min egen anpassade palett?',
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: 'Ja. Klistra in hex-koder i fältet Anpassade färger och välj Använd palett.',
204
+ },
205
+ },
206
+ ],
207
+ },
208
+ {
209
+ '@context': 'https://schema.org',
210
+ '@type': 'HowTo',
211
+ name: 'Hur du minskar en sprite till en retropalett',
212
+ step: [
213
+ { '@type': 'HowToStep', name: 'Ladda sprite', text: 'Släpp en fil i arbetsområdet.' },
214
+ { '@type': 'HowToStep', name: 'Välj palett', text: 'Välj förinställning eller ange hex-färger.' },
215
+ { '@type': 'HowToStep', name: 'Jämför och exportera', text: 'Granska resultatet och ladda ner PNG.' },
216
+ ],
217
+ },
218
+ ],
219
+ bibliography: [
220
+ {
221
+ name: 'MDN Canvas API',
222
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
223
+ },
224
+ {
225
+ name: 'Lospec Palette List',
226
+ url: 'https://lospec.com/palette-list',
227
+ },
228
+ {
229
+ name: 'W3C Portable Network Graphics Specification',
230
+ url: 'https://www.w3.org/TR/png-3/',
231
+ },
232
+ ],
233
+ };