Как сделать свое расширение файла
Делаем своё расширение для браузера за 10 минут
Cнова запускаем снежинки.
В конце 2020 года мы делали проект со снежинками — писали специальный скрипт, который запускал падающий снег на сайтах. Если бы мы хотели сделать такой снег на любом своём сайте, это не составило бы труда: добавляешь скрипт в код страницы, и готово.
А вот на чужих сайтах была проблема. Скрипт нужно было вставлять через консоль. А если на сайте была настроена политика безопасности, которая запрещает запуск внешних скриптов, то магия не срабатывала.
Сегодня мы это исправим — сделаем расширение для браузера, которое может запускать любой скрипт на любой странице. Мы охватим принцип, на основе которого вы сможете сделать собственные расширения, в том числе намного более сложные.
👉 Что такое расширение
Расширение для Chrome — это небольшая программа, которая выполняется внутри браузера и помогает расширить возможности сайтов. Сила расширения в том, что оно может выполняться прямо из меню браузера и не зависит от политик безопасности.
Примеры того, что может сделать расширение:
В этой статье
Мы сделаем самое простое расширение для браузера Chrome, которое позволит запускать скрипт со снежинками на любом сайте, независимо от настроенной политики безопасности. Для этого воспользуемся официальным руководством Google по созданию расширений.
Манифест
В каждом расширении для браузера должен быть манифест — документ, в котором написано:
Манифест задаёт общие правила для всего расширения, поэтому манифест — единственный обязательный компонент. Можно обойтись без иконок и скриптов, но манифест обязательно должен быть.Каждый манифест хранится в файле manifest.json — создадим пустой файл с таким именем и напишем внутри такое:
<
«name»: «Запускаем снежинки на любом сайте»,
«description»: «Проект журнала Код»,
«version»: «1.0»,
«manifest_version»: 3
>
Первые две строчки — это название и подробное описание расширения. Третья отвечает за номер версии расширения, а последняя говорит браузеру, какая версия манифеста используется в описании. На момент выхода статьи в феврале 2021 года используется третья версия.
Сохраняем файл и всё, расширение готово. Оно ничего не умеет, ничего не делает, зато мы уже можем добавить его в браузер. Для этого запускаем Хром и в адресной строке пишем:
Мы попадаем на страницу, которая нам покажет все установленные расширения:
Чтобы добавить своё расширение, в правом верхнем углу включаем режим разработчика, а затем нажимаем «Загрузить распакованное расширение»:
Теперь выбираем папку, в которой лежит наш манифест:
Отлично, мы только что добавили в браузер новое расширение:
Теперь мы можем обновлять наш манифест, класть в ту же папку дополнительные файлы, а для обновления в браузере достаточно будет нажать на круглую стрелку на карточке расширения.
Чтобы было проще работать и тестировать расширение, закрепим его на панели браузера:
Иконки
У расширения есть две иконки, которыми мы можем управлять:
Чтобы не рисовать всё с нуля, скачаем папку с иконками из того же руководства Google и положим её в ту же папку, что и манифест:
Теперь добавим иконки в манифест. За картинку в карточке отвечает блок icon, а за иконку на панели — блок action. Разные размеры картинки нужны для того, чтобы на разных мониторах с любой плотностью пикселей иконки выглядели хорошо:
Сохраняем манифест, обновляем расширение на странице настроек и смотрим результат:
Настраиваем разрешения
Разрешения — это то, что браузер позволяет делать расширению со страницами и с их содержимым. Для запуска снежинок нам нужно сделать две вещи:
Чтобы получить доступ к активной вкладке и к запуску скриптов, добавим в манифест такую строку:
«permissions»: [«activeTab», «scripting»],
Показываем меню
Если мы сейчас нажмём на иконку расширения на панели браузера, то ничего не призойдёт, потому что мы ничего не запрограммировали. Исправим это — сделаем так, чтобы при нажатии расширение показывало кнопку запуска. Когда расширение будет уметь больше, вместо одной кнопки можно будет показать целое меню.
Чтобы сделать всплывающее меню, добавим в манифест в раздел action такую строку:
Она означает, что при нажатии на иконку мы увидим рядом с ней мини-страничку, на которой что-то будет.Создадим в той же папке расширения файл popup.html и добавим в него такой код:
Сохраняем манифест, обновляем его на странице настроек и видим, что у нашего расширения появилось меню с кнопкой:
Запускаем снежинки
Вся магия будет происходить в файле popup.js — откроем его и добавим такой код:
Последнее, что нам осталось сделать, — положить в функцию snowFall() полный код скрипта из проекта со снежинками и сохранить файл.
Проверка
В прошлый раз мы не смогли запустить скрипт на любой странице Яндекса — мешала политика безопасности. Теперь всё работает:
Скачать упакованное расширение. Перед установкой его нужно распаковать в любую папку.
Собственный формат файла
19 ответов
При том, что этот формат достаточно универсален, в нем можно запихнуть все что угодно. А придумывать велосипед не нужно. Сеарилизируйте туда хоть весь дамп данных программы.
Например, видео. или исполняемый код. 🙂
Запихнуть то можно, но вот всегда ли оно того требует?
Автору топика:
слишком пространственный вопрос, все зависит от того, что ты собираешься хранить в файлах, как много, как часто, как универсально.
Например, видео. или исполняемый код. 🙂
Запихнуть то можно, но вот всегда ли оно того требует?
Автору топика:
слишком пространственный вопрос, все зависит от того, что ты собираешься хранить в файлах, как много, как часто, как универсально.
Форматы видео придуманы богами? 🙂
Что есть «специфичные данные»? Видео и исполняемый код является не специфичным?
Уверен, что все?
Мне нужно просериализовать игровой уровень (графика, звук, анимация, игровая логика, исполняемый код). Причем упаковывать буду на PC, а читать на PS2. Причем, грузиться должно не дольше 20 сек. Причем, никаких аллокаций памяти после загрузки файла. Чем не «специфичные» данные? Какой существующий формат предложишь?
Или другой пример: хочу сохранять резервную копию раздела диска.
Примеров море.
Повторюсь: все зависит от того, что именно хочешь сохранять и для чего. Если сохраняешь бинарные данные, чтоб далее использовать, как бинарные, то есть ли смысл переводить их в текстовый формат?
Нет, но они уже придуманы. Не нужно опять придумывать AVI (к примеру) формат.
Я имел ввиду данные, которые пока не стандартизированы.
Конечно не имееет, а зачем? А бинарных форматов тож много. Взять тот же всем известный РЕ.
Согласен, все зависит от области применения. Можно делать и через 2 полушария (далеко не моск), например сохранять текст нот в графическом формате, чтобы потом его распознавать и проигрывать 😀
Мне кажется человеку надо было бы рассказать про разделимые способы кодирования и иже с ними. Дать человеку представление, что инфа хранится более или менее самостоятельными блоками. Дать человеку мат. базу для оптимального разделения на эти самые блоки.
Задача ведь стояла «КАК СПРОЕКТИРОВАТЬ», а не как натянуть старый сапог на ногу на два размера бОльшую.
Ну мы же не знаем, может, автор топика придумал новый способ кодирования видео. Почему бы нет?
Нестандартизированных данных было, есть и будет всегда больше чем стандартизированных.
Нет, не проблема, однако с помощью XSL не имеет смысла, здесь свой формат нужен, в зависимости от того, как хотим хранить и как в последствии использовать.
Вот поэтому и сложно дать совет, пока автор топика не раскроет свой тайный замысел.
Конечно не имееет, а зачем? А бинарных форматов тож много. Взять тот же всем известный РЕ.
Согласен, все зависит от области применения.
Тогда зачем даешь однозначную ссылку на XSL со словами «все уже придумано»?
Применение собственного формата оправдано, если РАБОТА программы с ним обеспечивает значительное преимущество по сравнению с существующими стандартными.
Проблемы ХРАНЕНИЯ и ИМПОРТА не столь критичны, т.к. написать еще и собственный конвертор будет уже не такой сложной задачей, а самому процессу конвертации допустимо быть не столь быстрым.
Порывшись в гугле, оказалось, что данная тема не то чтобы плохо освещена, а совсем никак. Готовых форматов множество и они исчерпывающе описаны. Применение уже существующего формата абсолютно оправденно в большинстве прикладных задач. Но, как заметил Alex_soldier,
Задача проектирования собственного формата не является невыполнимой, но хотелось подойти к ней системно, используя, так сказать, «мат. часть» по данному вопросу.
Я не собирался морочить голову присутствующим. У меня нет никаких тайных замыслов :). Просто интересуюсь.
Необходимым условием полностью автоматической сериализации является наличие в рантайме ПОЛНОЙ метаинформации о типах объектов.
Порывшись в гугле, оказалось, что данная тема не то чтобы плохо освещена, а совсем никак. Готовых форматов множество и они исчерпывающе описаны. Применение уже существующего формата абсолютно оправденно в большинстве прикладных задач. Но, как заметил Alex_soldier,
Задача проектирования собственного формата не является невыполнимой, но хотелось подойти к ней системно, используя, так сказать, «мат. часть» по данному вопросу.
Я не собирался морочить голову присутствующим. У меня нет никаких тайных замыслов :). Просто интересуюсь.
Тебя интерисует двоичный или текстовый формат хоть? Если двоичный, то какие требования? Быстрота загрузки? Кроссплатформенность? Какого типа данные хранить собираешся?
Как сделать свое расширение файла
Всем доброго времени суток!
Я тут увидел ветку про открытие картинок с помощью блокнота 🙂 Когда-то я делал что-то вроде этого: пытался написать инсталятор, суть которого была в том, что в мемо загоняется файл, а потом производится команда Memo.Lines.SaveToFile. Долго думал, почему эта программа не работает? :-))))))))
Всё закончилось благополучно: на глаза попалась статеёка про кодировки и всё встало на свои места. Теперь сетапы стараюсь делать по-нормальному (как я считаю)
Так, вот, сам вопрос
Как создать свой формат файла? Суть в том, что в одном файле хранится, к примеру текст (досье человека) и другой файл (фото этого человека) + ещё и ещё файлы (если понадобится, например засунуть вордовский дкумент. ). ООООчень большой + будет в том, что многие такой файл взломать просто не смогут (не считая меня 🙂 ), все данные будут сгруппированны, храниться вместе. Но программа, естественно, должна читать всё по-отдельности.
Что мне нужно на данный момент по-минимуму: в один файл «засунуть» и текст, и картинку.
А! Чуть не забыл: зарнее спасибо 🙂
← →
Плохиш © ( 2007-01-23 18:54 ) [1]
← →
tif © ( 2007-01-23 18:55 ) [2]
Как создать последовательнеость байтов?
И как из этих байто-кирпичиков построить файл?
← →
Плохиш © ( 2007-01-23 18:59 ) [3]
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
begin
if OpenDialog1.Execute then < Öffnen-Dialogfeld anzeigen >
begin
AssignFile(FromF, OpenDialog1.FileName);
Reset(FromF, 1); < Datensatzgröße = 1 >
if SaveDialog1.Execute then < Speichern-Dialogfeld anzeigen >
begin
AssignFile(ToF, SaveDialog1.FileName);
Rewrite(ToF, 1); < Datensatzgröße = 1 >
Canvas.TextOut(10, 10, «Copying » + IntToStr(FileSize(FromF))
+ » bytes. «);
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
end;
end;
← →
tif © ( 2007-01-23 19:00 ) [4]
наверное туплю, но как потом обратно?
Добавь к своему нику ещё одну f и поищи в яндексе разбор этого формата.
Как раз то, что тебе нужно.
← →
tif © ( 2007-01-23 19:02 ) [6]
Удалено модератором
Примечание: Флудить завязываем
И всё в одном файле.
Single File System:
http://www.aidaim.com/single_file_system.htm
Без исходников бесплатно.
← →
TIF © ( 2007-01-26 14:40 ) [9]
Удалено модератором
Примечание: Флудить завязываем
> в мемо загоняется файл, а потом производится команда Memo.
> Lines.SaveToFile. Долго думал, почему эта программа не работает?
>
← →
TIF © ( 2007-01-26 14:47 ) [11]
Удалено модератором
Примечание: Флудить завязываем
← →
Сергей М. © ( 2007-01-26 14:51 ) [12]
> вопроса не понял. надо читать до конца
>
Читай, я не возражаю
← →
TIF © ( 2007-01-26 14:53 ) [13]
дык не мне читать-то 🙂
← →
Сергей М. © ( 2007-01-26 14:55 ) [14]
Ветка стала напоминать чат.
← →
Сергей М. © ( 2007-01-26 15:00 ) [16]
> Ветка стала напоминать чат.
← →
JFK&MM_extramarital_son ( 2007-01-26 15:01 ) [17]
Предварительно надо подать заявку в международный комитет по форматам файлов при ООН, ООП или при местном отделении Единой России и получить разрешение на разработку своего формата файла. Заплатив пошлину и приобретя shell иконку для нового типа.
Иначе ничего не выйдет.
← →
Сергей М. © ( 2007-01-26 15:02 ) [18]
> JFK&MM_extramarital_son (26.01.07 15:01) [17]
← →
TIF © ( 2007-01-26 15:06 ) [19]
> Предварительно надо подать заявку в международный комитет
> по форматам файлов при ООН, ООП или при местном отделении
> Единой России и получить разрешение на разработку своего
> формата файла. Заплатив пошлину и приобретя shell иконку
> для нового типа.
> Иначе ничего не выйдет.
и взятки не понадобилось
> какое извращённое восприятие окружающего мира
>
Я не понял, ты ветку ради флуда завёл.
Тебе был даден КОНКРЕТНЫЙ ответ на КОНКРЕТНЫЙ вопрос:
> Как создать свой формат файла? Суть в том, что в одном файле
> хранится, к примеру текст (досье человека) и другой файл
> (фото этого человека) + ещё и ещё файлы (если понадобится,
> например засунуть вордовский дкумент. ). ООООчень большой
> + будет в том, что многие такой файл взломать просто не
> смогут (не считая меня 🙂 ), все данные будут сгруппированны,
> храниться вместе. Но программа, естественно, должна читать
> всё по-отдельности.
>
Так вот, всё это решает TIFF.
← →
Сергей М. © ( 2007-01-26 15:09 ) [21]
> TIF © (26.01.07 15:06) [19]
>
>
> между прочим я уже создал несколько СВОИХ форматов файла
Ну ты и крут, братец кролик)
← →
Сергей М. © ( 2007-01-26 15:12 ) [22]
← →
TIF © ( 2007-01-26 15:12 ) [23]
нет, с помщью компонента FileTextFormat
← →
TIF © ( 2007-01-26 15:13 ) [24]
> Так вот, всё это решает TIFF.
мне нужен СВОЙ формат
а как потом из них извлекать например картинки? и загружать в TImage? а?
← →
Сергей М. © ( 2007-01-26 15:13 ) [25]
← →
TIF © ( 2007-01-26 15:14 ) [26]
> Продолжай в том же духе)
а втом же мне и ненадо, а надо в духе «запихни в файл картинку и достань её потом»
Ты, похоже идиот. Ты вообще про этот формат почитал?
← →
Сергей М. © ( 2007-01-26 15:15 ) [28]
> а как потом из них извлекать например картинки? и загружать
> в TImage? а?
← →
TIF © ( 2007-01-26 15:20 ) [29]
ладно, допустим я решил работать с TIFF форматом
КАК с ним программно взаимодействоать? Где найти примеры? Исходники? статьи? Ссылки?
И самое главное: как обеспечить безопасность данных? Ведь любой может взять и открыть TIFF файл. И посмотреть, что там! А оно мне надо.
← →
iXT © ( 2007-01-26 15:23 ) [30]
Что для тебя есть «формат файла»?
Чего ты от него хочешь?
з.ы.
Читать [1] до полного просветления.
← →
Сергей М. © ( 2007-01-26 15:25 ) [31]
> TIF © (26.01.07 15:20) [29]
> допустим я решил работать с TIFF форматом
Первым делом ты должен проштудировать имеющиеся материалы по этому формату.
Тырнет большой, в нем предостаточно таких материалов.
> как обеспечить безопасность данных? Ведь любой может взять
> и открыть TIFF файл. И посмотреть, что там! А оно мне
> надо?
← →
TIF © ( 2007-01-26 15:27 ) [32]
> Как создать свой формат файла? Суть в том, что в одном файле
> хранится, к примеру текст (досье человека) и другой файл
> (фото этого человека) + ещё и ещё файлы (если понадобится,
> например засунуть вордовский дкумент. ). ООООчень большой
> + будет в том, что многие такой файл взломать просто не
> смогут (не считая меня 🙂 ), все данные будут сгруппированны,
> храниться вместе. Но программа, естественно, должна читать
> всё по-отдельности.
>
← →
clickmaker © ( 2007-01-26 15:37 ) [33]
> [32] TIF © (26.01.07 15:27)
ты что, издеваешься?
Записывать в файл и читать из него потоки байт в той же последовательности, что и записал, умеешь?
Больше ничего для «создать свой формат файла» и не требуется
← →
Сергей М. © ( 2007-01-26 15:37 ) [34]
Нет, ну ты, ей-ей, идиот, г-н Кулибин)
Любая существующая более-менее приличная СУБД давным-давно реализует все это и многое-многое другое.
> КАК с ним программно взаимодействоать? Где найти примеры?
> Исходники? статьи? Ссылки?
Ты уже утомил.
Последний раз говорю: набери в яндексе «Описание формата TIFF».
← →
Сергей М. © ( 2007-01-26 15:41 ) [37]
> многие такой файл взломать просто не смогут
← →
iXT © ( 2007-01-26 15:43 ) [38]
← →
TIF © ( 2007-01-26 15:45 ) [39]
> Любая существующая более-менее приличная СУБД давным-давно
> реализует все это и многое-многое другое.
НЕНАВИЖУ чужиу СУБД. ужас, как ненавижу.
а как всё-таки защитить tiff?
← →
TIF © ( 2007-01-26 15:46 ) [40]
как это сделать программно?
вот так и ходим по кругу.
← →
Сергей М. © ( 2007-01-26 15:47 ) [41]
> НЕНАВИЖУ чужиу СУБД. ужас, как ненавижу
← →
TIF © ( 2007-01-26 15:47 ) [42]
так вот, для этого мне и нужен свой формат файла.
← →
Сергей М. © ( 2007-01-26 15:49 ) [43]
> Для этого мне и нужен свой формат файла
← →
TIF © ( 2007-01-26 15:51 ) [44]
какой блокнот? о блокноте речь не шла.
какой такой редактор. поподробнее
← →
Сергей М. © ( 2007-01-26 15:54 ) [45]
> какой блокнот? о блокноте речь не шла
Вот цитата из твоего творчества чуть выше по тексту:
> открытие картинок с помощью блокнота
> какой такой редактор. поподробнее
Обычный редактор текста.
← →
iXT © ( 2007-01-26 15:57 ) [46]
> TIF © (26.01.07 15:46) [40]
>
> > Архивируешь
>
>
> как это сделать программно?
И в чем тут проблемы? Или собственная лень мешает, либо.
Вообшем, сейчас советовался с Microsoft. Они сказали что никак низя, и что Windows неизвестные форматы будет просто удалять без предупреждения. Мотивировали тем, что инатче при двойном клике по файлу Windows будет виснуть от невозможности открыть неизвестный формат «блокнотом».
:)))))))))))))))))))
← →
TIF © ( 2007-01-26 16:07 ) [47]
> > открытие картинок с помощью блокнота
а потом я написал, что это ерунда
ИТАК подводим ИТОГИ.
Кто считает не так.
← →
Сергей М. © ( 2007-01-26 16:14 ) [48]
> 1) Берём картинку, разбиваем на биты
А уж если та самая вражеская разведка это увидит, то просто повесится тут же на месте)
← →
TIF © ( 2007-01-26 16:17 ) [50]
а внутри что будет? структура. это и есть формат
а внутренности-то я вам и не покажу
могу только на примере показать, если надо
> могу только на примере показать, если надо
>
← →
TIF © ( 2007-01-26 16:23 ) [52]
← →
TIF © ( 2007-01-26 16:29 ) [53]
> var
>
> FromF, ToF: file;
> NumRead, NumWritten: Integer;
> Buf: array[1..2048] of Char;
> begin
> if OpenDialog1.Execute then < Öffnen-Dialogfeld anzeigen
> >
> begin
> AssignFile(FromF, OpenDialog1.FileName);
> Reset(FromF, 1); < Datensatzgröße = 1 >
> if SaveDialog1.Execute then < Speichern-Dialogfeld
> anzeigen >
> begin
> AssignFile(ToF, SaveDialog1.FileName); < Ausgabedatei
> öffnen >
>
> Rewrite(ToF, 1); < Datensatzgröße = 1 >
> Canvas.TextOut(10, 10, «Copying » + IntToStr(FileSize(FromF))
> + » bytes. «);
> repeat
> BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
> BlockWrite(ToF, Buf, NumRead, NumWritten);
> until (NumRead = 0) or (NumWritten <> NumRead);
> CloseFile(FromF);
> CloseFile(ToF);
> end;
> end;
> end;
а как всё-таки обратно.
и я вас закончу мучать 🙂
← →
Сергей М. © ( 2007-01-26 16:41 ) [55]
> внутри что будет? структура. это и есть формат
Вот ведь новость-то)
> а внутренности-то я вам и не покажу
> никто никогда его не узнает (формат-то)
← →
Hint ( 2007-01-26 16:47 ) [56]
Эта тема лучше всякого орешника =)))
Чтоб пост не был флудом:
Как уже и писали тебе будет проще всего скопировать нужные файлы в отдельную папку и сжать эту самую папку как-нибудь ZIP»ом (готовых бесплатных компонентов море).
← →
Сергей М. © ( 2007-01-26 16:52 ) [57]
Предположим что я есть представитель вражеской разведки и я знаю форматы всех «как-нибудь ZIP»ов», и мне не составляет труда узнать, что же там какой-то TIF(C) захреначил в файл в формате «такого-то ZIP»а»..
Автор же, судя по его постам, при этом попросту удавится, проделав «титаническую» работу по «созданию своего формата с помощью блокнота» и узнав об этом)
А нам тут, вишь ли, на поминки скидываться придется))
← →
iXT © ( 2007-01-26 16:53 ) [58]
= длина последующих данных.
= поток данных (структура с досье, bmp или jpg потоки и т.д.
← →
Плохиш © ( 2007-01-26 16:54 ) [60]
> TIF © (26.01.07 16:29) [53]
> а как всё-таки обратно.
Ик. ик. ик. ааааа. оооо. Пардон, вылез из под стола.
А у меня архиватор есть, он архивирует любые файлы до 1 байта.
Только добавить ещё
По крайней мере я бы добавил.
← →
Elen © ( 2007-01-26 16:58 ) [62]
> Ega23
Я знаю что в TIFF можно загнать несколько картинок, но музыку и подобное. Может подскажеш как или чем (существующим, чтоб свое не лепить.)
← →
iXT © ( 2007-01-26 17:03 ) [63]
> Virgo_Style © (26.01.07 16:54) [59]
Он же секретный, а ты всем рассказал 🙂
← →
Сергей М. © ( 2007-01-26 17:03 ) [64]
← →
Elen © ( 2007-01-26 17:04 ) [65]
> многие такой файл взломать просто не смогут
Э-э. Так вот чего надебно автору. Защита. В чем проблема Перезаписывай файлы каким нибудь своим криптомейкером. 😉
← →
Elen © ( 2007-01-26 17:05 ) [66]
← →
TIF © ( 2007-01-26 17:06 ) [67]
> Эта тема лучше всякого орешника =)))
само собой, у нас всё высого качества
> Как уже и писали тебе будет проще всего скопировать нужные
> файлы в отдельную папку и сжать эту самую папку как-нибудь
> ZIP»ом (готовых бесплатных компонентов море).
а потом любой откроет архивчик и пиши пропало
← →
TIF © ( 2007-01-26 17:07 ) [68]
можат, скриптомейкером? или как? и ваще, що це таке?
← →
Плохиш © ( 2007-01-26 17:08 ) [69]
Всё, пойду выкручу из машины ремень безопасности и прикручу его к креслу.
← →
Сергей М. © ( 2007-01-26 17:09 ) [70]
Но только такой же идиот, как и Автор, будет подбирать «проги» в надежде выковырять из TIF-файла суперпуперсекретную инф-цию, засандаленную туда Автором.
← →
Сергей М. © ( 2007-01-26 17:10 ) [71]
> Я знаю что в TIFF можно загнать несколько картинок, но музыку
> и подобное. Может подскажеш как или чем (существующим,
> чтоб свое не лепить.)
>
Да, кстати: само изображение в тифе храниться построчно. А вот порядок этих строк в самом файле может быть абсолютно произвольным, главное, чтобы в IFD они в правильном порядке были описаны.
← →
Elen © ( 2007-01-26 17:13 ) [73]
Если кого интересует, могу описание формата выслать. Исходники моего «ковыряния» высылать не буду, т.к. во-первых стыдно за тот код, а во-вторых, я уже и сам не помню как оно там всё работало. 🙂
← →
Сергей М. © ( 2007-01-26 17:14 ) [75]
Лучше бы ты статью на эту тему на Мастаках оформил, нежели баловать барана новыми воротами)
← →
Elen © ( 2007-01-26 17:15 ) [76]
> Ega23
Во теперь ясно. (схоже с ID3 тегом в MP3). Спасибо за инфу 😉
На самом деле, филосовский вопрос: а что есть Image? Лично я, как честый разработчик БД под MSSQL, отношусь как к бинарному набору данных. 🙂
← →
Elen © ( 2007-01-26 17:17 ) [78]
> Ega23
Да уж Ну не смейтесь но для меня привычнее Image = Picture, хоть это и не так, вот и попадаюсь на мелочах перевода 🙂
← →
Плохиш © ( 2007-01-26 17:19 ) [79]
В jpeg в exif тоже можно чего угодно нафигачить. Вон PhotoShop туда такое пишет 🙂
> Лучше бы ты статью на эту тему на Мастаках оформил, нежели
> баловать барана новыми воротами)
Да я бы, может, и оформил бы. И даже кодер-декодер переписал бы уже начисто. Просто я разобрал тогда, вроде, десяток самых важных тэгов из что-то около сотни стандартных. Я тогда решал маленькую частную задачу и мне этого десятка тегов полностью хватило.
А если их десяток и оставить, то это уже не статья получится, а поделка флёновская. Да и описание формата в сети есть, надо только чуть-чуть мозг наморщить. 🙂
> В jpeg в exif тоже можно чего угодно нафигачить. Вон PhotoShop
> туда такое пишет 🙂
Да вроде в любой формат можно всего напихать. Я как-то сильно на эту тему не заморачивался.
← →
Сергей М. © ( 2007-01-26 17:26 ) [82]
> надо только чуть-чуть мозг наморщить
Жаль только Автор их не слышит)
← →
TIF © ( 2007-01-26 17:33 ) [83]
> Если кого интересует, могу описание формата выслать. Исходники
> моего «ковыряния» высылать не буду, т.к. во-первых стыдно
> за тот код, а во-вторых, я уже и сам не помню как оно там
> всё работало. 🙂
> Жаль только Автор их не слышит)
у меня уже складки дыбом встали от напряжения, а они тут криптографию разбирают
← →
Плохиш © ( 2007-01-26 17:36 ) [84]
> у меня уже складки дыбом встали от напряжения
Спермотоксикоз? Других напряжений пока не замечено.
А почему мне не должно быть стыдно за код, написанный студентом-второкурсником, фактически не имеющим никакого понятия о Delphi, VCL и ООП в целом, но построевшего кодер именно таким способом?
Ega23 © (26.01.07 16:57) [61]
Согласен, как минимум добавить стОит.
> Согласен, как минимум
> добавить стОит.
>
← →
Anatoly Podgoretsky © ( 2007-01-26 22:29 ) [88]
Ну вы и потрепались классно сегодня.
← →
Плохиш © ( 2007-01-27 00:58 ) [89]
> Anatoly Podgoretsky © (26.01.07 22:29) [88]
> Ну вы и потрепались классно сегодня.
Мы ещё и в понедрюльник продолжим 😛 Только веточку стоит в правильнуэ конференцию перенести 😉
Вот тебе супер-формат:
type
TMyStorage = class(TComponent)
published
property Pictre: TPicture read FPicture write FPicture;
property Text: string read FText write FText;
// и т.д.
end;
var Storage:TMyStorage; Stream:TStream;
.
Stream.WriteComponent(Storage); // Пишем данные
Stream.ReadComponent(Storage); // Читаем данные
Ведь тебе не надо произвольных имен файлов в этом формате?
ага ЩАЗЗЗЗЗЗЗЗЗЗЗЗЗЗ.
Что прямо ЩАЗ этим и занимаешся?)
TIF © (26.01.07 17:07) [68]
можат, скриптомейкером? или как? и ваще, що це таке?
Шифрование.
Сергей М. © (26.01.07 17:10) [71]
Лучше уж ГРМ к ж..е)
А что такое ГРМ?
← →
Смаг ( 2007-01-27 16:21 ) [92]
TIF © (26.01.07 17:33) [83]
Денег дашь? А то у меня есть свой формат файла с исходниками само собой, могу продать.
← →
Vendict © ( 2007-01-27 19:15 ) [93]
наконец то я понял, как это кататься по полу. )))
Плохиш © (27.01.07 0:58) [89]
в правильнуэ конференцию перенести 😉
«орешник» она называется )))
← →
@!!ex © ( 2007-01-27 19:35 ) [94]
Помоему это стеб, автор не может быть настолько идиотом.
P.S.
А что мешает данные запакованные ZIP тупо запаролить?
← →
TIF © ( 2007-01-28 13:05 ) [95]
Было время подумать (аж 5 дней), вот я и вернулся, и не впонедельник, как пророчили, а в воскресенье.
Почитал, поразбирал свои ошибки, прочистил мозги и пришёл к следующим выводам:
2) Конечно, лучше сжимать файлы и ставить на них (архивы) пароли (придётся копаться и искать как :-((( ). но моя программа должна, например, устанавливаться на компе с 32 мб оперативки. да, там и win rar тормозит, а моя програмка тем более.
привет
12 булок, 3 батона
окенга
зщ ропенл ъй ьвюбсч
так что, формат-кодировка получился. Безопасность данных обеспечена.
3) Понял, в чём суть формата файла: определённое количество последовательностей байтов.
> Смаг (27.01.07 16:21) [92]
> TIF © (26.01.07 17:33) [83]
> Денег дашь? А то у меня есть свой формат файла с исходниками
> само собой, могу продать.
Жду ответов. И плз, без мата, сдерживайтесь, господа!
===
PS: специально сходил к невропатологу 🙂 Никаких заболеваний не нашли, опухоли мозга тоже нет :-)))))))))
===
← →
Zeqfreed © ( 2007-01-28 13:28 ) [96]
← →
Anatoly Podgoretsky © ( 2007-01-28 14:01 ) [98]
> TIF (28.01.2007 13:05:35) [95]
> PS: специально сходил к невропатологу 🙂 Никаких заболеваний не нашли, опухоли мозга тоже нет :-)))))))))
Попробуй сменить врача, пройти томографию.
← →
antonn © ( 2007-01-28 14:40 ) [100]
Все. Больше не верю.
← →
GuAV © ( 2007-01-28 17:26 ) [102]
Есть такой вариант: zip в котором xml и другие данные. По этому пути пошли и разработчики MS Office, OpenOffice.Org, Google Earth и, возможно, ещё кто-то. И я кстати тоже на этом остановился (я тут спрашивал несколько месяцев назад про формат, могу прислать ту ветку)
var
f: file of byte;
begin
AssignFile(f, «c:\1.bin»); //название файла
Rewrite(f); //перезапишем файл
Write(f, 1); //запишем три байта
Write(f, 2);
Write(f, 3);
CloseFile(f);
end;
← →
TIF © ( 2007-01-29 15:56 ) [104]
> var
> f: file of byte;
> begin
> AssignFile(f, «c:\1.bin»); //название файла
> Rewrite(f); //перезапишем файл
> Write(f, 1); //запишем три байта
> Write(f, 2);
> Write(f, 3);
> CloseFile(f);
> end;
хоть я это и знал, но всё равно спасибо. Понял, в чём суть формата файла, суть записи байтов. Всё. УРА!
Надеюсь, больше писать не буду. В ЭТОЙ ветке.
PS: томографию я сделал. Всё ок! Злопыхатели, злопыхайте! А я здоров, как две тысячи семь коров! кстати, только что писал олимпиаду по математике «третье тысячелети». не сказать, что написал отлично, но неплохо. Через недельку-другую будут известны результаты.
всё, пошел ломать винду :-))))
← →
Сергей М. © ( 2007-01-29 16:16 ) [105]
> только что писал олимпиаду
> Через недельку-другую будут известны результаты
Гомер нервно курит в сторонке)
← →
TIF © ( 2007-01-29 16:23 ) [106]
Удалено модератором
Примечание: Флудить завязываем
← →
Сергей М. © ( 2007-01-29 16:25 ) [107]
И все же уточни результаты томографии.
Автору:
бесплатно даю редактор файла шрифтов.
Если применить могзи.ехе то можно сделать собственный формат.
Удачи. Только осторожно а то мозги.ехе могут выполнить не допустимую ошибку и будут закрыты.
Привожу текст програмки на паскале в следующем посту.
// Editor for vector fonts type «CHR» Borland International
uses
Crt,
Graph,
F_GrText,
F_Mouse;
type
pathstr= string[79];
TChar4 = array [1..4] of Char;
Структура заголовка шрифта
TFontHead = record case Byte of
0: (FontFileID: TChar4);
1: (BorlandID : array [1..128] of Byte) end;
Блок параметров шрифта
TFontPara = record case Byte of
0: (ParPrefix : Char; Символ «+»
CharsCount : Word; Число символов в шрифте
Reserv1, Не используется
FirstChar : Byte; Код первого символа
DataOffset : Word; Смещение до векторных
команд первого символа
FillFlag, Флаг заливки
UpperMargin, Высота символов
Reserv2 : Byte; Не используется
LowerMargin: ShortInt; Нижняя кромка
Reserv3 : array[1..5] of Byte Не используется );
1: (H2 : array [1..16] of Byte) end;
TOffst = array [0..255] of Word; Смещения
TWidth = array [0..255] of Byte; Ширины
TChars = array [0..255] of Pointer; Данные
TLengD = array [0..255] of Word; Длина
AW = array [1..434] of Word;
Векторы рабочего поля
TCooE = record x1, y1, x2, y2 : Integer
end;
TMouseMask = array [0..1, 0..15] of Word;
var
FontHead : TFontHead; Заголовок файла
FontPara : TFontPara; Параметры шрифта
NVecE, Количество векторов в WE
FileSize, Длина загружаемой части файла
HeaderSize : Word; Смещение блока параметров
FName : Pathstr; Имя файла
F : file; CHR-файл
Widths : TWidth; Таблица ширин
ws : Array[0..7,0..31] of byte absolute widths;
LengD : TLengD; Длина данных в байтах
ls : Array[0..7,0..31] of word absolute lengd;
Chars : TChars; Указатели на данные
cs : Array[0..7,0..31] of pointer absolute chars;
Offsets : TOffst; Таблица смещений
ds : Array[0..7,0..31] of word absolute offsets;
MaxW, Максимальная ширина символа
MaxH, Полная высота символа
AFileSize : Byte; Положение FileSize
xt, yt, Левый верхний угол таблицы символов
dxt, Ширина клетки таблицы символов
dyt, Высота клетки
xr, yr, Координаты окна повтора
xe, ye, Левый верхний угол WE
xe2, ye2, Правый нижний угол WE
yb, Ордината базовой линии
WidthX, Правая граница символа
dxe, Ширина клетки WE
dye, Высота клетки WE
dxm, dym : Integer; Границы мыши в рабочем поле
VecE : array [1..250] of TCooE; Векторы в WE
WR : Pointer; Образ пустого окна повтора
MouseF : Boolean; Флаг формы указателя мыши
CurM, Стандартная маска указателя
CurE : TMouseMask; Маска в рабочем поле