как можно зная размер файла спрайта, получить (как то подсчитать) его высоту и ширину? особенно если учесть что спрайт могет быть или 8на8 или 512 на 256 к примеру...как то можно или универсальной формулы нет?
Вид для печати
как можно зная размер файла спрайта, получить (как то подсчитать) его высоту и ширину? особенно если учесть что спрайт могет быть или 8на8 или 512 на 256 к примеру...как то можно или универсальной формулы нет?
вопроса не понял...
Ну если речь про спекк, то берёшь по размер X спрайта кратен 8 точкам.
- если спрайт чёрно белый то получается - длина файла N. Если N - число простое, то очевидно что имеем дело с спрайтом X=8, Y=N. Если N не простое, то делаешь X=2..N-1 и делишь Y=N/X. Как только получается Y - целое вероятно что это оно и есть и ты нашёл параметры спрайта. Если не нашлось такого целого Y что Y=N/X при любом X из этого диапазона то очевидно что алгоритм программы сбоен - потому что число не простое :-) Соотвественно будет получено несколько значений для X и Y. Однако надо понимать, что если например N=27 то возможны варианты X=3 Y=9 и X=9 Y=3, в этом случае нужно уже делать эвристический анализ на то где плавнее меняется содержимое ("кривой" по параметрам спрайт будет содержать скорее шум чем изображение).
- если спрайт цветной то всё то же самое за исключением того, что имеет место N = X*Y+(X/8*Y) - вторая часть отвечает за атрибуты.
:wink:+2
спрайт без заголовка. например файл имеет размер 15360. как можно расчитать размеры спрайта имея только подобные данные...в это и заключается вопрос.
причём неорганичиваясь только на размерах экрана спектрума типа 32*192...
неужели до сих пор не очевидно, что 100% решения не существует? если бы у тебя была длина файла равная произведению 2х ПРОСТЫХ чисел, тогда варианта всего 2. а в общем случае - раскладывать длину на простые множители и пробовать все комбинации (в т.ч. с произведениями множителей). и каждую комбинацию визуально проверить!
возможно, это можно автоматизировать, анализируя изображение, но это сложно и тоже не даст 100% результата.
да я просто думал что за 10 лет местные знатоки придумали способ)))
ладно, спасиба.