Автор Тема: Разбить изображение на неповторяющиеся тайлы  (Прочитано 566 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2675
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Чем можно такое сделать?

У меня нарисована картинка bmp 512 х 96 пикселей, и мне надо разбить изображение на тайлы 8 х 8 пикселей и убрать все повторяющиеся тайлы, оставив только по одному экземпляру таких тайлов. Чем это сделать? Существует ли какой-то онлайн сервис для таких вещей?

Т.е. мне из изображения надо составить тайловую карту.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3846
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Какой-нибудь чат гпт такое умеет?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2706
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
так по моим заветам :) это не сложно. а докучи можно и палетквант прикрутить, чтоб прям до полного блекджеку. правда если это про сеговскую графику речь. если не про сеговскую, то осуждаю! :) но на самом деле просто поменять количество цветов на то что нужно и все будет точно так-же работать.

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2675
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Я могу и сам написать что-то подобное в теории, но неохота время тратить, так как программист из меня так себе. Просто думал, что есть что-то подобное и общеизвестное...

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2706
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
в принципе в дюновском редакторе такое думаю можно сделать - вставить картинку из буфера обмена и разбить на тайлы, палитру и карту. по моему там на всю длинну картинку вставить можно, то есть не 320, а с учетом правой заэкранной части. просто потом карту подрезать в хекс редакторе, так как карту сделает полноразмерную. но я уже все забыл. а под рукой нет ни сборщика Дюны, ни редактора к ней...

дюноводы со сборщиком и редактором есть в сети? нам надо натурные тесты провести :)

Добавлено позже:
во... выкидыватель тайлов есть. пойдет? но там не создает палитру. вписывает в загруженную. правда он еще и криво работает... но это нормально. я ж делал.

Добавлено позже:
сначала загрузить в три окошка снизу существующую карту, сет и палитру - в архиве из дюны эти файлы. после из буфера обмена скопируй картинку 512х224 и жмакай... эээ... слева кнопки без картинок (потерялись где-то иконки пасте-копи). одна должна вставить из буфера обмена картинку. после жмакнуть экспорт. но палитра, повторюсь, будет существующая. система попробует вписать твою картинку в существующую палитру. вставку со своей палитры я видимо недокрутил...

Добавлено позже:
а я пойду гляну остались ли сурсы от него... выкинуть полоску зеленую надо. и чтоб со своей палитрой вставлять можно было.

Добавлено позже:
удалил выкидыватель. наш форумный проект подойдет. просто докрутим туда 512 ширину вместо 320... сек.

Добавлено позже:
кароче смотри... свою картинку наложи на большую картинку 512х224, просто в верхней части. после вставляй. галки никакие не ставь. то есть кнопка import, потом обязательно кнопка выкинуть тайлы. потом кнопка save files. потом можно тест, но там покажет только 320х224. тот край за пределами экрана не покажет. но он там будет. после просто файл тайловой карты пореж в хекс редакторе, оставив только... эээ... сколько там 512х96 / 64 * 2... вроде столько байт.

Добавлено позже:
ну и нулевой тайл там будет пустой. возможно он все испортит :)
« Последнее редактирование: 29 Январь 2026, 18:17:00 от ghostdog3 »

Оффлайн Chaotix

  • Пользователь
  • Сообщений: 1671
  • Пол: Мужской
    • Просмотр профиля
но неохота время тратить, так как программист из меня так себе. Просто думал, что есть что-то подобное и общеизвестное...
Нейронки смогут сгенерить.
Вот самодостаточным бинарником: (404: этот скрипт в следующем сообщении, но уже не exe)
Не факт, что такое как нужно. Но задача тоже не очень точно была поставлена и без примера.
« Последнее редактирование: 28 Январь 2026, 03:51:07 от Chaotix »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5640
    • Просмотр профиля
Форматы tileset, tilemap, палитры разные, поэтому делается под нужную платформу или проект. Я пишу скрипт для каждого случая. Например, для NES бывает нужно разбирать графику на несколько CHR банков, поэтому индексы тайлов начинаются заново.
Приложите пример картинки и в каком формате файлы на выходе, попробую адаптировать простой скрипт на Python (без нейронок). Предполагается, что изображение уже в индексированном виде.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2706
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
вобще так то да... он жеж не сказал какая платформа :))) я по привычке про мегадрайву думаю.

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2675
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Да на платформу пофигу, к примеру денди. Для примера такой файл png (512 х 96 пикселей, надо разбить на тайлы 8 х 8 без повторений):

https://dropmefiles.com/lho8v

Можно работать и с растровым bmp, пересохранив файл...

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2706
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
о блин... про тайловые карты дендей не знаю :( так что мой вариант не пойдодет. у меня только любимая мегадрайв  :blush: (ибо в тайловой карте приоритет, выбор палитры, зеркала - не думаю что в денде так-же)
« Последнее редактирование: 28 Январь 2026, 02:40:53 от SeregaZ »

Оффлайн Chaotix

  • Пользователь
  • Сообщений: 1671
  • Пол: Мужской
    • Просмотр профиля
Разбить изображение на неповторяющиеся тайлы
« Ответ #10 : 27 Январь 2026, 21:16:18 »
Уникальных тайлов найдено: 32
Такое нужно, что-ли?
del (в архиве было 32 тайла 8х8 и тайлсет, но на примере есть надпись Nintendo, поэтому лучше с форума убрать несвободные ассеты)

Вот ещё сайт:
https://portabledev.com/pvsneslib/tilesetextractor/

Он делает тайлсет без повторов, вроде бы. А тайлсет уже не проблема резать на тайлы.
С опцией Tolerance = 1 экономно получается, но незначительные изменения не учитывает.

Но, вообще, по NES я не эксперт, поэтому лучше помолчу. Думал, что просто готовый тайлсет нарезать на тайлы, пропустил что тайлмап тоже нужен. Хотя не вижу проблемы с тайлмапом, но тебе видней какой надо формат. Я в json делаю вообще.

Вот python скрипт, на всякий случай. Тоже нужен Pillow, конечно.
* tile_splitter2.zip (5.74 КБ - загружено 20 раз.)
Если надо добавить фичу (тайлмап), берешь код и идешь, например, в Deepseek (chat.deepseek.com), говоришь объяснить как работает и что добавить. С большой вероятностью в готовый код уже добавит.

На других языках будет дольше, Python + Pillow самый простой вариант. Тем более, что Sharpnull ниже готовое решение дал и оно генерит тайлмап и под формат NES.
« Последнее редактирование: 28 Январь 2026, 19:00:33 от Chaotix »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5640
    • Просмотр профиля
Разбить изображение на неповторяющиеся тайлы
« Ответ #11 : 28 Январь 2026, 01:18:00 »
Да на платформу пофигу, к примеру денди
В каком-то формате выводить всё-таки нужно. Вот относительно универсальный скрипт, в 1-м аргументе передать PNG или BMP. Обрабатывает тайлы в RGB, в _tilemap.bin индексы тайлов по 1 байту как на NES, в _tiles.png тайлы, в _palette.png палитра. В_tiles_nes.bin тайлы как у NES, если цветов не больше 4, и можно изменить порядок индексов цветов (из палитры) вторым аргументом, например, "img_to_tilemap.py 1234.py 3210" сделает индексы наоборот. Скрипт только для 1 палитры (любого размера). Нужно установить Pillow в командной строке (от админа): pip install -U Pillow.

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2675
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Разбить изображение на неповторяющиеся тайлы
« Ответ #12 : 28 Январь 2026, 06:28:56 »
Спасибо!

Онлайн Марат

  • Пользователь
  • Сообщений: 560
  • Пол: Мужской
    • Просмотр профиля
Разбить изображение на неповторяющиеся тайлы
« Ответ #13 : 29 Январь 2026, 10:53:15 »
MapImage2, который лежит у нас на сайте уже лет 10, наверное, такое умеет делать.

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2675
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Разбить изображение на неповторяющиеся тайлы
« Ответ #14 : 29 Январь 2026, 15:17:14 »
У меня на старом ноуте он как-то странно работает... :neznayu: