есть ли какая-нибудь команда чтобы в skyrimе скрины делать
Есть программа Fraps. Ее вполне достаточно.
WezT
fic95
за вас уже давно придумана кнопка Printscreen на клавиатуре. Советую взять фонарик и лупу, юзеры.
Остроумный-то какой) Если бы у меня нормально работал PrintScreen, я бы не стал упоминать программу.
Если бы у меня нормально работал PrintScreen, я бы не стал упоминать программу.
ну у большинства в Скайриме кнопочка принтскрин таки работает нормально.
WezT
может ты перепутал с F12? В стиме так и делаются скрины этой кнопкой, только не работает она почему-то. ни в какую, копался-копался — без толку. Плюнул и стал делать по-человечески. А принтскрин работает всегда и везде, в любой проге. За исключением нескольких прог связанных с DOC. не помню. короче Pascal не отскринить.
У меня пиратка, чтобы ты знал. Видимо кривая, ибо скрин говнистый получается.
Ну а если ты имеешь ввиду махинации с этой клавишей и Пэйнтом, то тут мне просто влом сворачивать игру и делать дальнейшие действия)
TES:V-Skyrim | Как делать красивые скриншоты в Скайриме?
А может и перепутал с F12.
WezT
хаха, принтскрин и прямиком в пейнт)) Ну чувак отжег) Принтскрин у меня сразу делает файл картинки в корне игры, даже на экране пишет об этом, мол сохранен такой-то файл. Т.е. видимо для скайрима переделали F12 на принтскрин. А пиратка. покупай лицензию, поблагодари труд разработчиков, не будь. сам знаешь кем.
Стимчик, Стимчик. Нет, пусть получат большой и волосатый. диван.
PrintScreen делает снимок экрана и добавляет его в буфер обмена. Только в определенных играх он сохраняет сразу его файлом, в остальных через Пэйнт.
Только в определенных играх он сохраняет сразу его файлом
ну так вот Скайрим — в список этих «определенных игр» как раз и входит, напрягаться с пэйнтом или фрапсом в нем незачем.
WezT
все пойму, если у тебя инет не позволяет скачивать объемы под гигабайт. да какой там гиг, чтобы 100 метров для тебя было бы уже полдня работы. Вот тогда прощаю любую пиратку. Но ведь ты пиратку свою СКАЧАЛ. Это несколько гигов, в разы больше, чем в стиме это обновление, т.ч. че ты на стим ссылаешься?
Я ее скачал у знакомых родителей, когда мы праздновали у них Новый Год.
Мне полдня работы может и одна песня, весящая под семь метров, составить.
Вопрос не по теме простите уж но как вы срины делаете какой прогой
вы срины делаете какой прогой
я обычно самим Скайримом и делаю — жму принтскрин, в папку с игрой пишется очередная картинка. это где-то в настройках можно запретить, но по дефолту в лицухе разрешено. Ещё в лицухе вроде можно стимовским оверлеем скрины снимать, но мне лень разбираться куда они попадают 🙂
ну а в более других играх, где своей скриноснималки нет — fraps
mad wolf
у меня во фрапсе формат не меняеться формат фото тот который он снимает не идет сюда а принтскрин чета пиристал работать
формат фото тот который он снимает не идет сюда
Скайрим — Как сделать скриншот в Skyrim, на какую кнопку?
ну не идет сюда напрямую — горе то в чем? совсем нечем конвертнуть сделанный принтскрин в нужный формат?
так на это существует куча программ в диапазоне от пайнта до фотошопа. (я использую XnView)
заодно и разрешение изменить и лишнее обрезать часто невредно.
принтскрин чета пиристал работать
Skyrim.INI, секция [Display], строка bAllowScreenshot=1
Скачанный пиратский Fraps меня всегда спасает, если надо сделать скрин.
Посоветуйте как делать скриншоты без интенфейса (компаса, перекрестья, манабара)?
что можно зайти в настройки и сделать интерфейс прозначным — я в курсе, но это же долго, а постоянно со спрятанным интерфейсом бегать не хочется.
У меня скрины не сохраняются я делаю они не сохраняются
я делаю они не сохраняются
как делаешь и где смотрел что не сохранились?
mad wolf
Посоветуйте как делать скриншоты без интенфейса (компаса, перекрестья, манабара)?
Используй другую прогу для скринов, не встроенную, например, fraps, которую ты сам всем советовал.
А что мне можете посоветовать? Через PrintScreen сохраняется скрин в формате bmp,который к тому же ещё и повреждён. Fraps вообще не пашет,а подобные проги сохраняют просто чёрный экран.
Sabzerror
А что с Fraps?
mad wolf
Tfc в консоли введи
nestrbob
Да Fraps вообще ничего не сохраняет,только игра чуть подвисает в момент нажатия кнопки скрина.
Sabzerror
Измени путь папки сохранения, измени клавишу скрина.
nestrbob
Сейчас попробую первое,а второе не помогло
Sabzerror
Переустанови Fraps.
nestrbob
Ну я утром пробовал,а сейчас снова установил,чтобы попробовать те способы
Сейчас попробую другую версию
Вообще не пашет. А какие другие проги есть подобные?
Испробовал Fraps , HypeSnap, ScreenShot, FreeScreenVideoRecorder
Да Fraps вообще ничего не сохраняет,
у меня сохраняет, что я делаю не так? FRAPS 3.4.7 13809, win7/64, но и со всеми предыдущими никогда проблем не было, и не думаю что что-то в новой версии поломали.
он конечно нерегистреный сохраняет только .bmp — но этого достаточно.
Tfc в консоли введи
так долго же — бежим, видим красивый кадр — открываем консоль — пишем tfc или tm — закрываем консоль — жмем кнопку скриншота на выбор у скайрима|стима|фрапса — открываем консоль — опять пишем tfc или tm — закрываем консоль — бежим дальше.
Хочется как-то сильно поменьше действий. Прямо командами консоли запустить запись скриншота точно невозможно?
Шерил
Используй другую прогу для скринов, не встроенную, например, fraps, которую ты сам всем советовал.
И с чего возникло заблуждение, что навесная прога сможет отключить что-то в интерфейсе скайрима на время записи скриншота?
mad wolf
Я до конца так и не въехал. У тебя Fraps, с клавиши на клаве, скрины делает? Почему не регистрированный? А видео пишет?
чё вы мучаетесь? фрапс скачали кнопки на клаве назначили и скриньте, или видос записывайте.
У меня фрапс не bmp, а jpeg файлы сохраняет, а bmp обычная кнопка на клаве print screen фоткает+ ещё от ENBшника скрины в более цветастом вариане скринятся. тобишь когда жму print screen у меня получаются 2 одинаковых скрина в папке skyrim только один обычный, а другой более яркий.
обычно скринов под 2-3гб наскриню, а потом другой прогой всё это сразу кучей преобразовываю в jpeg формат+сразу и переименовываю там же сразу кучей например: скрины от 08-04-13
Kanagan81
У тебя Fraps работает, а других проблемы. Ты бы клавишу в Fraps на скрин сменил, на хрен 2 одинаковых скрина. Я у себя сделал + скрин, — видео.
У тебя Fraps, с клавиши на клаве, скрины делает?
ну да, а чего бы ему этого не делать, совершенно не понимаю откуда с ним могут быть проблемы — работал он всегда без проблем.
Почему не регистрированный?
влом ломать лишний раз, мне без разницы в чем принскрины — сконвертировать не проблема и позже.
я обычно вообще скайримовской кнопкой принтскриню, фрапс запустил просто проверить что проблем с ним нет и принтскринит он те же скрины.
mad wolf
А не надо ни чего ломать, все Fraps уже с регом и на русском. Под это дело обновил свой до 3.5.9.
Fraps уже с регом и на русском.
вот как мне потребуется длинные ролики писать — тогда и буду менять, пока меня на 100% устраивает скачанный год назад с оффсайта и нереганый английский — скрины делает, fps показывает, смысла суетиться невидно.
mad wolf
Вся суета и 5 минут не занимает.
nestrbob, есть такое принцип: работает — не трожь
эти 5 минут, если случатся совсем лишние, можно потратить на что-то более полезное.
трата времени на конвертацию отпадает.
как же она отпадает, когда я в любом случае буду скриншотить в bmp — для качества. я же не первый раз себе фрапс ставил и знал чего от него хочу.
mad wolf
Согласен, но не в данном случае. Здесь ты получаешь полнофункциональную программу и трата времени на конвертацию отпадает.
А лучше всего купить лицензию и нормально делать скрины
Ren0x пиратка Скайрима и без приблуд скрины делает ничуть не хуже чем лицензия, только на стим не выкладывает, спасибо разработчикам.
Print Screen- Paint — Жмем Ctrl+V= Сохраняем фотографию на компьютер.
Или же используем программы.
Bandicam или Fraps (Программы для снятие видео и фотографий).
У меня просто ПринтСкрин и загружается в папку с игрой.
Для тех, кто хочет делать скриншоты с разных ракурсов, не пропускать интересные моменты при этом, и не мучаться от мешающих деталей интерфейса.
Команда «tfc 1» включает не просто свободную камеру, а свободную камеру+остановку времени в игре. Чтобы вернуть все обратно набираем в консоли уже просто «tfc».
Команда «tm» — отключает весь интерфейс в игре(консоль при этом тоже становится невидимой), после чего не забудьте нажать кнопку консоли, чтобы закрыть ее.. Чтобы все вернуть нужно снова ее ввести.. но консоль теперь не видно(после первого ее ввода), — поэтому нажимаем кнопку, открывающую консоль, нажимаем на клавиатуре 1 раз кнопку со стрелкой вверх(переключает на предыдущую введенную в консоли команду) и нажимаем «Enter». Интерфейс снова включается.
«csb» — очищает экран от крови (команда полезна для съемки скриншотов во время боя.)
sucsm — меняет скорость движения свободной камеры, где — числовое значение. Например, = 50 увеличивает скорость движения камеры в 5 раз по сравнению с исходной.
fov — угол обзора экрана во время игры. Стандартный угол в игре = 65
set gamehour to — установить время в игре. — целая величина от 0 до 23 включительно. Например: 0 — полночь, 15 — 3 часа дня.
У меня тоже всё ОЧЕНЬ просто! Нажимаю Preent Screen и изображение сохраняется в папку с игрой!
Greywarn
Чтобы все вернуть нужно снова ее ввести.. но консоль теперь не видно(после первого ее ввода), — поэтому нажимаем кнопку, открывающую консоль, нажимаем на клавиатуре 1 раз кнопку со стрелкой вверх(переключает на предыдущую введенную в консоли команду) и нажимаем «Enter». Интерфейс снова включается.
Зачем такие сложности? Тем более что не у всех получится. Проще ткнуть тильду (открыть консоль в невиде) и на клаве нашлепать «tm» затем Enter.
mad wolf
Не надо у меня тоже принтскрин не работает в играх некоторых, например в райвалсе, просто чёрный экран.
Насколько помню Preent Screen сохраняет в формате BMP, что не очень удобно, многие сайты скрины в таком формате не принимают. На мой взгляд — лучший выбор это fraps, есть возможность выбора формата сейва, да и других возможностей с избытком.
nestrbob
В любой оське встроен Paint им переделать формат картинки проще простого из BMP в JPG или PNG делов 2 секунды и отправляй куда и кому хочется
За скрины отвечает параметр bAllowScreenshot=1 в C:usersyoudocumentsMy GamesSkyrimSkyrim.ini. Собственно как и в Обливионе. Лично у меня он по умолчанию включен(1) и скрины валятся в папку с игрой.
з.ы. мне просто приятно знать, что 2 года спустя кому-то это «древнее знание» может никому не понадобиться)
У царей все еще легче, цари просто нажимают кнопку скриншота в стиме,загружают его, и делятся радостью с сообществом, и друзьями.
steam — F12
Часть первая
Итак, первое, что вам нужно, это немного фантазии и терпения. Увы, но по-настоящему красивый скриншот не получится без старания, некоторого запаса времени и фантазии.
Второе — консольные команды.
Консоль важный инструмент в создании скриншотов: с помощью нее вы можете попасть в труднодоступные места и сделать замечательные кадры. Вот список наиболее распространенных из них:
— «TFC» — режим свободной камеры, неадресная команда.
При использовании этой команды камера отделяется от ГГ, и отключаются коллизии. При написании «TFC 1» камера отделяется от гг, а все окружение парализуется. Исключение составляет трава и деревья.
Если вы наберете эту команду в режиме от первого лица, то не увидите своего героя. Ежели вы наберете ее при виде от третьего лица, герой будет стоять на месте и вертеть головой или же застынет в той позе, в которой был.
Выключайте при сохранении игры :3
Ежели вы при следующем входе в игру видите некий непонятный ландшафт, введите в консоль команду снова: игра немого подвиснет, а потом вы вновь увидите своего персонажа.
— «TAI» — отключение искусственного интеллекта игры. Является адресной командой, то есть может быть использована на конкретном НПС.
Использование без адреса: ИИ игры будет отключено, все НПС перестанут что-либо делать, просто-напросто став «овощами».
Использование с адресом: «TAI» может быть использована как для НПС, так и для игрока. При выключении ИИ у НПС, персонаж застынет в той позе, в которой находился до применения команды. При использовании «TAI» на игроке, он не застынет, а не сможет взаимодейстWowать с окружением.
Включение ИИ происходит так же, как и отключение, поэтому не паникуйте, если игрок перестанет обращать внимание на вашу ругань при использовании кузницы или застывшего в километре от вас напарника :3
— «TCAI» — неадресная команда, используется для отключения способности боя у НПС без затрагивания их взаимодействия с миром.
Используйте команду, если желаете пройти сквозь ряды врагов и запечатлеть вашего персонажа среди них.
— «TM» — наиважнейшая неадресная команда. Отключает интерфейс. Необходимая деталь для скриншота. Без них я вангую вам секту Свидетелей Прицела и Компаса (автор статьи, ее друзья и админ являются их соратниками, хотя зачастую приструняют секту за ее дерзость) С:
Выключается ровно так же, как и включается.
При следующем возвращении в игру интерфейс будет с вами, так что не бойтесь забыть включить его перед выходом.
— «FOV»- неадресная команда, влияющая на угол обзора.
По дефолту под каждый монитор устанавливается свой угол обзора. Зачастую он равен 75. Допустимые значения от 0 до 200.
Для портретной сьемки «FOV» может быть от 30 до 5, при этом увеличится зум.
Для пейзажей используйте «FOV» от 40 до 100.
Для прикола можно установить значения выше или ниже С:
Не забудьте обнулить FOV, иначе при следующем входе в игру вас ждет не очень приятный сюрприз. (Просто введите fov без числа в консоль — смао обнулится).
— «QQQ» — команда быстрого выхода из игры. Зачастую она помогает забывчивым людям, что не смогли вновь включить интерфейс.
Ну или же игра начала тормозить (фпс ниже 3)
Часть вторая
Далее будет перечислен краткий список команд, относящийся к читерству:
— TGM — отключение зависимости ГГ от окружающего мира, в простонародье называемый «режимом бога». Лучше использовать на низких уровнях во время свободной камеры, если вы боитесь за сохранность вашего персонажа.
— TCL — адресная команда отключения коллизии. По-простому персонаж или НПС начинает летать. Типа летать, ага ._.
— TMM 1 — отображение всех маркеров на карте мира. Поможет вам, если вам снова лень переоткрывать маркеры в игре.
— placeatme — адресная команда помещения объекта рядом с вами.
— moveto player — адресная команда перемещения уникального НПС к вам.
— COC — телепортация в нужную вам локацию по ее ID.
— PRID [refID] — не совсем читерство, но является его частью. Команда выделяет объект по его ID в консоли.
— [ID].inv — команда отображения в консоли списка ID предметов в контейнерах.
— PSB — добавляет все заклинания из игры. При использовании некоторых будут вылеты на рабочий стол С:
Третье, что вам нужно — правильная постановка.
Здесь вам необходимо почувстWowать себя немного художником, советы здесь будут давать вам завсегдатаи альбомов со скриншотами. Также вы можете воспользоваться игровым редактором и изменить окружение сами, что любит делать автор статьи С:
Четвертое — правильное освещение.
Используйте различные заклинания для того, чтобы осветить область для скриншота. Также, лично мой совет, хорошие скриншоты получаются днем в период с 10 часов утра до 4 часов дня при чистом небе (расчистить его можно с помощью крика «Чистое Небо».
Пятое — постобработка.
Постобработка может выполняться в разных графических программах или же напрямую в игре с помощью избранного вами ENB. Большая коллекция пресетов находится на сайте Skyrim.nexusmods.com , а чтобы запустить их вам необходимо скачать инжектор с сайта enbdev.com
Также вы можете сделать enb-пресет под себя или же попросить личный пресет других пользователей (если они поделятся, конечно).
Для более детальной настройки вашего пресета enb можете использовать программку enb customizer.
Источник: www.rubattle.net
Вопрос Не могу сделать сркиншот в скайриме, жму принт скрин, сама игра не пишет о скриншоте, но кадр заедае
Но когда открываю пеинт вставлять нечего. В папке строка bAllowScreenshot=1
присутствует.
артем54
артем54
Регистрация 10 Дек 2012 Сообщения 68 Репутация 0 Спасибо 0 Монет 0
Скриншоты — в папке Skyrim.
Похожие темы
Ответы 5 Просмотры 891
Поделиться:
- Игры
- Другие онлайн игры
- Вопросы обо всех играх
- Светлый 4cheaT.ru
- Russian (RU)
- Обратная связь
- Условия и правила
- Политика конфиденциальности
- Помощь
- RSS
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.
Источник: 4cheat.ru
Исправляем битый bmp-скриншот из игр Bethesda
На днях друг скинул скриншот в формате bmp ScreenShot10.bmp.gz из игры Skyrim. Файл не хотел открываться в доброй половине просмотрщиков, а там, где открывался, получалось искаженное изображение:
Как выяснилось, в некоторых играх Bethesda был баг с кодировщиком в bmp. В статье я расскажу в чём проблема, как исправить файл, а также познакомлю с форматом bmp.
Большую часть операций я буду проводить в Hex-редакторе. Можно взять wxHexEditor, HxD, либо открыть файл прямо в браузере https://hexed.it/
Представление данных, Little endian и Big endian
Кратко напомню о типах и представлении данных.
Минимальной единицей измерения информации является бит . Бит принимает значение 0/выключен/ложь и 1/включен/правда, то есть имеет два состояния.
Два бита имеют 2 2 = 4 состояния: 00, 01, 10 и 11
Восемь бит имеют 2 8 = 256 состояний, это один байт (или byte, int8)
Два байта состоят из 16 бит, содержат 65536 состояний и именуются словом (или word, short, int16).
Четыре байта состоят из 32 бит, содержат 2 32 состояний и зовутся двойным словом (или dword, int32).
Существует два порядка представления последовательности байт:
Little endian — первым идёт младший байт, а последним старший.
Big endian — наоборот, первым байтом идём старший байт, а последним младший.
В последовательности байтов, скажем, для int32 0D 0C 0B 0A , в Little Endian 0D будет младшим байтом, соответственно, значение следует воспринимать как:
0Dh*2 1 + 0Ch*2 8 + 0Bh*2 16 + 0Ah*2 24
= 13*1 + 12*256 + 11*65536 + 10*16777216
= 168496141
Для Big Endian 0D будет старшим байтом, соответственно:
0Dh*2 24 + 0Ch*2 16 + 0Bh*2 8 + 0Ah*2 1
= 13*16777216 + 12*65536 + 11*256 + 10*1
= 218893066
Формат 24-битного BMP
Разновидностей BMP несколько, например, существует 1-битный монохромный BMP, 8-битный BMP, который может содержать лишь 256 цветов. Но мы остановимся на 24-битном, содержащем до 16 миллионов цветов, потому что в Skyrim используется именно он. Разберём на примере этого изображения 8×8 sample-24bit.bmp
Первые 14 байт это заголовок файла BMP. Для файла выше эти 14 байт выглядят так:
42 4D F6 00 00 00 00 00 00 00 36 00 00 00
Первые два байта ( 00-01 ) — маркер BMP изображений. Для Windows BMP он всегда имеет значения 424D (ASCII-коды символов BM)
Дальше идут 4 байта int32 ( 02-05 ) — размер файла в байтах. Формат BMP использует Little Endian, значит, F6000000 = 246
Следующие два слова int16 (06-07 и 08-09) — зарезервированы и не используются. В нашем файле они имеют значение 0.
Последние 4 байта int32 ( 0A-0D ) — смещение непосредственно к данным о пикселях. Для 24-битных изображений не нужно сохранять палитру, как это есть в 8-битном формате, поэтому значение здесь обычно 3600000 = 54 (54 байта: 14 заголовок файла + 40 информация об изображении)
Следующие 40 байт содержат важную информацию об изображении:
28 00 00 00 08 00 00 00 08 00 00 00 01 00 18 00 00 00 00 00 C0 00 00 00 C4 0E 00 00 C4 0E 00 00 00 00 00 00 00 00 00 00
int32 ( 0E-11 ) — размер этого заголовка 2800000 = 40 байт
int32 ( 12-15 ) — ширина изображения 0800000 = 8
int32 ( 16-19 ) — высота изображения 0800000 = 8 , итого 8×8
int16 ( 1A-1B ) — для BMP всегда имеет значение 1
int16 ( 1C-1D ) — разрядность (количество бит на пиксель) изображения 1800 = 24 -бит.
int32 ( 1E-21 ) — метод компресии. 0-RGB (самый распространённый), 1-RLE8, 2-RLE4 и т.д. 0000000 = 0 : RGB.
int32 ( 22-25 ) — размер пиксельных данных в байтах. C000000 = 192 : 246 (размер файла) — 14 (длина заголовка) — 40 (длина информации о файле) = 192 байта, всё сходится.
int32 ( 26-29 ) — количество пикселей на метр по-горизонтали. C40E000 = 3780 , что соответствует 96 пикселям/дюйм
int32 ( 2A-2D ) — количество пикселей на метр по-вертикали. C40E000 = 3780 .
int32 (2E-31) — количество цветов в палитре, для 24-бит не используется
int32 ( 32-35 ) — количество используемых цветов в палитре, тоже не используется.
Наконец, от смещения 36h до самого конца идут пиксели в формате RGB по три байта (int24 Little endian). Данные идут построчно, но снизу вверх, с выравниванием до 4 байт в строке. Например, изображение 2×2
█ █
█ █
в байтах выглядело бы так:
FF 00 00 00 00 00 00 00
00 00 FF 00 BB 00 00 00
Поскольку ширина равна двум пикселям, а записав строку по три байта на компонент цвета, получилось бы 6 байт, то требуется ещё выравнивание до кратности 4 байтам, то есть добавляются два байта с любыми значениями, но обычно 0.
Но вернёмся к примеру 8х8. Для удобства, сгруппировал эти данные по три байта и на одной строке разместил 3*8=24 байта, что соответствует изображению 8×8. 24 кратно 4, поэтому выравнивание здесь не используется.
5CE975 5CE975 5CE975 5CE975 5CE975 5CE975 5CE975 5CE975
5CE975 5CE975 5CE975 5CE975 5CE975 5CE975 577AB9 5CE975
E2CC72 E2CC72 E2CC72 E2CC72 E2CC72 E2CC72 577AB9 E2CC72
E2CC72 E2CC72 E2CC72 E2CC72 E2CC72 4CB122 577AB9 4CB122
E2CC72 E2CC72 E2CC72 E2CC72 E2CC72 4CB122 4CB122 4CB122
E2CC72 9DFAFF E2CC72 E2CC72 E2CC72 4CB122 4CB122 4CB122
9DFAFF 00F2FF F8F8F8 F8F8F8 E2CC72 E2CC72 4CB122 E2CC72
E2CC72 9DFAFF E2CC72 F8F8F8 F8F8F8 E2CC72 E2CC72 F8F8F8
Если прочитать эти триплеты в Little endian и представить в виде цветов, то получим:
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
Отразив по-вертикали, получаем итоговое изображение:
Как кодировщик рассчитывает размер файла при записи
До этого мы играли роль декодировщика и по байтам пытались прочитать изображение, но как ведёт себя кодировщик, когда ему нужно закодировать массив пикселей в валидный bmp файл? Первое же препятствие — записать размер файла ещё до того, как файл сформирован.
Дальше нужно просто записать всё в файл.
Баг кодировщика bmp у Bethesda
Так что же не так с bmp файлом от Bethesda? Давайте посмотрим на заголовок файла и информацию об изображении ScreenShot10.bmp.gz (не забудьте разархивировать файл):
42 4D 36 06 30 00 00 00 00 00 36 00 00 00 28 00
00 00 56 05 00 00 00 03 00 00 01 00 18 00 00 00
00 00 00 06 30 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
Размер файла : 36063000 = 3147318 байт
Ширина : 56050000 = 1366 пикс.
Высота : 00030000 = 768 пикс.
Размер пиксельных данных : 00063000 = 3147264 байт
Ширина и высота правильные; размер файла в заголовке соответствует реальному размеру файла, при этом он больше размера пиксельных данных на 54 байта, значит, всё правильно, при условии, что размер пиксельных данных посчитан верно.
Проверим же это.
Представим, что нам пришел массив пикселей 1366×768 и нужно закодировать в bmp 24-бит:
Ширина: 1366 пикс.
Для кодирования одного пикселя в RGB требуется 3 байта
Для кодирования одной строки пикселей: 3*1366 = 4098 байта
4098 mod 4 = 2, то есть строку нужно дополнить двумя байтами, чтобы делилось на 4
Длина одной строки с учётом смещения: 4098+2 = 4100 байт
Высота: 768 пикс.
Для кодирования 768 строк пикселей: 768*4100 = 3148800 байта
Выходит, размер пиксельных данных должен быть 3148800, но в файле он 3147264.
Посмотрим, что насчитали в Bethesda: 3147264 / 768 (высота) = 4098
Бинго! Не учтено выравнивание до 4 байт!
Исправляем
Чтобы исправить файл, нужно записать в заголовок правильный размер пиксельных данных и правильный размер файла, а также 768 раз дополнить данные изображения двумя произвольными байтами — байтами выравнивания.
Разумеется, вручную это делать не стоит, но раз уж взялись за Hex редактор, можно немного и поизменять значения. Поскольку пикселей в изображении 1366×768 = 1049088, для ширины 1366 требуется выравнивание по 2 байта, а его нет, почему бы не изменить ширину так, чтобы выравнивание не требовалось, а количество пикселей при этом не изменялось? Добиться этого легко, если в несколько раз увеличить ширину, уменьшив при этом высоту.
Если взять вместо 1366×768 изображение 2732×384, количество пикселей так и останется 1049088, но при этом 2732*3 = 8196 делится на 4 без остатка, а значит выравнивание не требуется! Записываем новые ширину и высоту: 2732 dec = 0AAC hex, 384 dec = 0180 hex, в int32 Little endian будет AC 0A 00 00 80 01 00 00 . Записываем эти значения по оффсету 12h:
Цитата Совет: Можно поставить курсор на первое значение, например, высоты (оффсет 16h) и в поле напротив 32-bit integer изменить значение на 384.
Сохраняем, открываем bmp в просмотрщике и видим
При таком представлении, получается, что первая строка пикселей оригинального изображения занимает первую строку левой части картинки, вторая строка пикселей оригинального изображения — первую строку правой части, третья строка — вторую строку левой, четвёртая — вторую строку правой и так далее.
Если теперь обрезать одну из сторон и растянуть по высоте до 768, то получим примерное представление о содержимом.
Полноценно исправляем
Но вернёмся к правильному восстановлению. Скрипт исправления будет на языке Python. Открываем битый файл и проверяем сигнатуру BMP:
Источник: annimon.com