Как разбирать и собирать файл фоновой картинки 01-12.bmp
Тут вот подумал, что не каждый умеет разбирать и склеивать картинки. А кто-то вообще не имеет представления, что картинка 01-12.bmp - это не одна картинка и не несколько слоёв, а 12 последовательно склеенных картинок. Вот и решил написать очередной роман. Правда думал ещё, в какую бы тему это запихать. Решил в эту, так как вроде тоже каким-то боком связано с темой замены цветных шрифтов. И те и другие параллельно меняются по месяцам и получается привязаны друг к другу.
==================================================
Придумал вот способ как вставить одну большую картинку в файл 01-12.bmp, чтобы выводилась как фон под волнами и при этом бы работали все 12 цветовых тем.
Мне удалось только приклеить к 11-ти стандартным темам (60х34) 12-тую с максимальным размером 300х170. Больший размер у меня никак не удавалось заставить работать, картинка совсем не отображалась или пропадало часть иконок. Но в принципе и так неплохо выглядет, особенно если взять картинку без чётко очерченных контуров.
Надо сначала найти 12 стандартных картинок 60х34 в формате BMP или нарисовать самому. Если лень рисовать, то можно взять оригинальную 01-12.bmp из прошивки, которая лежит в папке
flash0:/vsh/resource/01-12.bmp или найти кастомную, коих в инете хоть пруд пруди.
В этом одном файле 01-12.bmp склеены 12 картинок BMP, следующие по очереди одна за другой и имеющие абсолютно одинаковый размер.
При просмотре такой картинки на компьютере будет отображаться только первая картинка, а про остальные вы даже и не будете подозревать, что они там присутствуют.
Об этом можно только догадаться по размеру файла, равным 74112 байт : 1024 = 72,375 Килобайт. Если 74112 байт разделить на 12 картинок, то получим 6176 байт - размер одной картинки 60х34. То есть, если вы видите файл 60х34 с размером 72,3 Кб, то сразу становится ясно, что это не одна картинка bmp, а 12 склеенных в один файл.
Теперь нам надо просто разрезать этот файл на 12 одинаковых частей. Для этого нам понадобится программка-нарезчик. Например подойдёт маленькая простенькая бесплатная прога, написанная Алексеем Тарановым под названием "
Split Files".
В верхней половине программы можно разбивать файлы на части, а в нижней - склеивать.
Сейчас нам надо разбить файл 01-12.bmp на 12 частей.
Слева наверху в окне "Опции" выбираем пункт "число", правее в поле "Число частей" вводим 12.
Нажимаем кнопку "Выбрать" и находим приготовленный файл 01-12.bmp.
Нажимаем на кнопку "Разбить файл" и получаем 12 файлов с названиями 01-12.001, 01-12.002, 01-12.003,.....01-12.012.
Как видим, расширение у них в виде трёхзначных чисел. Переименуйте у всех 12-ти файлов расширение на "
.bmp" и теперь можно будет наглядно посмотреть на картинки.
Теперь берём вашу любимую картинку 480х272 и открываем её в любом графическом редакторе.
Можно воспользоватся Фотошопом, но желательно в
XnView Complete version (Multi-language), так как картинки меньшего размера и без потери качества не умеет делать однозначно никто.
Дело в том, что многочисленные именитые программы обработки графики всегда добавляют в картинку свою информацию о том, что она была редактирована именно этой программой, информацию о расположении слоёв, о своих цветовых шаблонах, информацию для печати на принтерах, поддерживающих EXIF для более точной цветопередачи и ещё тонны всякой информации, порою даже превосходящей по весу саму картинку. А
XnView не страдает такой гордостью и наоборот умеет избавляться от такой информации, не затрагивая саму картинку.
Короче, открыли картинку. Открываем меню "Рисунок -> Изменение размера" и поставив галочку "Сохранять пропорции" вводим ширину и высоту - 300х170.
Затем идём в "Инструменты -> Преобразование JPEG без потерь -> Диалог" и в открывшемся окошке ставим галочки "Отсечь у рисунка неиспользуемые пиксели" и "Сброс значения ориентации из EXIF". Нажимаем кнопку "Выполнить".
В заключении идем в меню "Файл -> Сохранить как", выбираем формат JPG - JPEG. Там же нажимаем кнопку "Опции" и выбираем значение качества не ниже 85%, а лучше 100%, так как картинка у нас итак 300х170 - ниже физического разрешения экрана, да и весить она будет не больше 20 Килобайт.
Ну вот у нас есть теперь всё, что нужно: 12 отдельных картинок 60х34 в формате BMP и одна красивая 300х170, но в формате JPG.
Нам же нужны все картинки одного формата - BMP.
Придётся пойти на небольшую уловку. Надо просто переименовать расширение с
JPG на
BMP и сразу назвать её
12.bmp.
У нас получилась картинка 12.bmp размером 300х170 и весом 20 Кб, хотя настоящая картинка формата BMP весила бы около 150 Кб.
Теперь перейдём к процессу склеивания всех 12-ти картинок в одну.
Положите 11 картинок 60х34 отдельно в одну пустую папку, а 12-тую последнюю заменим на свою 12.bmp (300x170).
Названия у картинок должно быть такое - 01.bmp, 02.bmp, 03.bmp.....12.bmp.
Заметьте, что наша большая картинка обязательно должна быть последней двенадцатой, так как считывание происходит побитово с начала в конец. Отсчитав определённое количество бит, необходимое на первую картинку, дальше должна начинаться вторая картинка и так далее. А если начала картинки там не окажется, то она не будет отображаться. Поэтому, если мы положим нашу большую картинку всередину или в начало, то все последуюшие картинки сместятся и нарушится адрес каждой следующей картинки, в результате чего все последующие будут не в состоянии прочитаться. А начало последней картинки по любому будет находится на нужной позиции и поэтому она легко прочитается, независимо от того, большая она или маленькая. Главное начало, а конец всегда найдётся
.
Итак, продолжим процесс склеивания. Ну уж клеить то наверное все умеют, это дело не хитрое.
Чтобы склеить все картинки нам не нужна никакая программа. Вернее мы сами её щас нарисуем.
Создайте в той же папке с приготовленными картинками пустой текстовой документ - жмём в папке правой кнопкой мыши и выбираем "
Создать -> Текстовый документ". Открываем его блокнотом и копируем туда три следующие строчки:
@echo off
copy /b 01.bmp+02.bmp+03.bmp+04.bmp+05.bmp+06.bmp+07.bmp+08.bmp+09.bmp+10.bmp+11.bmp+12.bmp 01-12.bmp
pause
В принципе первую и третью строку можно вообще выкинуть, просто так будет понтовее.
Сохраняем его при закрытии и переименовываем, нy-у-у например в Вася.bat. Главное, чтоб на конце расширение было "
.bat", как у нормального исполняемого файла.
Запускаем наш батничек "
Вася.bat" и забираем готовую картинку
01-12.bmp.
Быстренько берём ЗЫЗу в руки, открываем в Рекавери flash0 и закидываем в vsh/resource/... .
Запускаем консоль, заходим в "Настройки темы" и радуемся жизни. Смотрим на волны, геймбуты, вспоминаем Чёрное море, Канарские острова, смотря какую картинку влепили
Вот один пример такой картинки:
Скачать
И имейте ввиду, что собранный таким хитрым способом файл, обратно разложить на 12 картинок не получится, так как программа разрезает файл на одинаковые куски, а у нас последняя картинка больше, чем другие. Из-за этого, разрезав обратно файл на 12 равных частей, все 12 картинок разрежутся со смещением и будут испорченными.
Можно разрезать картинку, задав размер части 6176 байт, но в таком случае 11 первых картинок вырежутся нормально, а вот 12-тая большая порежется на несколько кусочков.
Можно вырезать все картинки в HEX-редакторе, имхо самый лёгкий и эффективный способ.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кстати, есть ещё один способ отображения картинки. Обычно просто картинку BMP переименовывают как
01-12.bmp и так же используют в качестве фона. Недостаток такого метода в том, что картинка будет отображаться только как первый Январский месяц фона, а на остальных месяцах будет белый экран и не получится так же менять цвет шрифта, изменяя месяцы. Но зато картинка получается ближе к физическому разрешению экрана и выглядет почти без искажений. Только вот сколько не скачивал таких картинок, все они не больше, чем 460х261 и весят довольно прилично, около 300Кб.
Мой же метод аналогично вышеописанному. Берёте полноразмерную картинку 480х272 и так же открываете в программе XnView.
Размер не меняем, а только избавляемся от излишней информации, как я уже описывал выше. Ну можно ещё сжатие выставить на 85-90%, что будет практически не отличимым от оригинала, но зато меньше весить.
Потом сохраняем её как JPEG и затем переименовываем в 01-12.bmp.
Зато размер её будет составлять 20-80 Кб в отличии от 380 Кб BMP при таком размере.
Правда показывать её будет так же только при выборе первого месяца, зато со 100-процентным качеством в полный размер без растяжения и соответственно без искажений.
Если взять картинку BMP 480x270, которая весит 380 Килобайт, потом сохранить её в JPEG, получив картинку в 80 Килобайт, а затем обратно переименовать её на BMP (80 Кб), то получатся две абсолютно идентичные по отображению картинки BMP, только размер у них будет заметно отличаться.
Вот пример такой картинки -
скачать.
На всякий случай, кто хочет на первый месяц
ЧЁРНЫЙ ФОН, а остальные месяца цветные -
скачать