![]() |
вопрос по формуле или алгоритму...
как можно зная размер файла спрайта, получить (как то подсчитать) его высоту и ширину? особенно если учесть что спрайт могет быть или 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) - вторая часть отвечает за атрибуты. |
Quote:
|
:wink:+2
|
Quote:
Мужчинам с плюсами - флуд отставить. |
спрайт без заголовка. например файл имеет размер 15360. как можно расчитать размеры спрайта имея только подобные данные...в это и заключается вопрос.
причём неорганичиваясь только на размерах экрана спектрума типа 32*192... |
неужели до сих пор не очевидно, что 100% решения не существует? если бы у тебя была длина файла равная произведению 2х ПРОСТЫХ чисел, тогда варианта всего 2. а в общем случае - раскладывать длину на простые множители и пробовать все комбинации (в т.ч. с произведениями множителей). и каждую комбинацию визуально проверить!
возможно, это можно автоматизировать, анализируя изображение, но это сложно и тоже не даст 100% результата. |
да я просто думал что за 10 лет местные знатоки придумали способ)))
ладно, спасиба. |
Quote:
|
| All times are GMT +4. The time now is 21:03. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.