{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Математик среди биологов: заметки с тегом виртуальная коллекция",
    "_rss_description": "Я немного умею складывать, но от вычитания у меня всегда кружится голова",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/antonlyakh.ru\/blog\/tags\/virtualnaya-kollekciya\/",
    "feed_url": "https:\/\/antonlyakh.ru\/blog\/tags\/virtualnaya-kollekciya\/json\/",
    "icon": false,
    "author": {
        "name": "Антон Лях",
        "url": "https:\/\/antonlyakh.ru\/blog\/",
        "avatar": false
    },
    "items": [
        {
            "id": "134",
            "url": "https:\/\/antonlyakh.ru\/blog\/all\/vyrezaem-pixelnuyu-grafiku-iz-vectornogo-fayla\/",
            "title": "Вырезаем растровую графику из СВГ",
            "content_html": "<p>Столкнулся с задачей.<\/p>\n<p>Есть фотография большого размера (более 4 тыс. пикселей по ширине), на которой запечатлены части живых организмов.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/big-photo-of-ligophorus-haptor.jpg\" width=\"800\" height=\"600\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Большая фотография с прикрепительными структурами плоского паразитического червя<\/div>\n<\/div>\n<p>Организмы — это паразиты. Мизерные примитивные червячки из <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%BE%D0%BD%D0%BE%D0%B3%D0%B5%D0%BD%D0%B5%D0%B8\">класса Моногеней<\/a>, живущие на жабрах рыб. К жабрам они крепятся при помощи крючков.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/ligophorus-on-liza-gills.gif\" width=\"800\" height=\"185\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Рисунок головы кефали из работы <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B8%D0%B4%D0%BE%D0%B2,_%D0%90%D0%BD%D0%B0%D1%82%D0%BE%D0%BB%D0%B8%D0%B9_%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B5%D0%B2%D0%B8%D1%87\">Световидова<\/a> (1964); рисунок жабр и сидящего на них паразита из работы <a href=\"http:\/\/journals.plos.org\/plosone\/article?id=10.1371\/journal.pone.0142365\">Лопеса-Беленгуэра с сотоварищами (2015)<\/a><\/div>\n<\/div>\n<p>Разные виды червячков внешне очень похожи. Они отличаются только формой прикрепительных крючков. У каждого таксономического рода уникальная форма крючков, но среди видов одного рода различия форм не столь очевидны. Чтобы их обнаружить, надо использовать методы морфометрического анализа.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/diversity-of-haptoral-hooks.png\" width=\"800\" height=\"507\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Метод главных компонент описывает разнообразие форм прикрепительных крючков разных родов моногеней. График из <a href=\"http:\/\/link.springer.com\/article\/10.1007\/s11230-011-9303-1\">статьи Вигнона (2011)<\/a><\/div>\n<\/div>\n<p>Для выполнения морфометрического анализа мы оцифровываем форму крючков. Загружаем фотографию в Инскейп, обводим кривыми и сохраняем результат в СВГ.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/digitized-hooks.gif\" width=\"800\" height=\"600\" alt=\"\" \/>\n<\/div>\n<p>Проблема в том, что готовый файл слишком много «весит». Исходный джипег размером 800 Кб, после обводки и сохранения в СВГ, толстеет до 12 Мб. В результате мне присылают мегатонные свгешки с внедренной графикой, которые надо разместить на сервере, а он не резиновый.<\/p>\n<p>Я не могу выбросить фото и загрузить на сервер только векторные кривые. Потому что контуры обрисовывают несколько человек, у каждого свои особенности рисования, они ошибаются, и результаты надо перепроверять. А фотография помогает проверить правильность построения контуров.<\/p>\n<p>Я несколько часов пытался уменьшить размер свг-файла с графикой без потери качества. Попробовал уменьшить в Инскейпе, не получилось — размеры фотографии и свг-файла остались огромными. Потом разобрался с форматом и нашел решение.<\/p>\n<p>Формат СВГ поддерживает два способа хранения изображений.<\/p>\n<p>Первый, когда графический файл внедрен в СВГ. Это не оптимальный способ, потому что  файл не сжат. Изображение состоит из последовательности символов в <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Base64\">позиционной системе счисления с основанием 64<\/a> (base64). Отсюда 800 Кб превращаются в 12 Мб.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/image-embeded-in-svg.png\" width=\"800\" height=\"287\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Фотография, внедренная внутрь свг-файла, занимает очень много места<\/div>\n<\/div>\n<p>Второй, когда СВГ хранит ссылку на внешний графический файл. Тогда СВГ содержит только <a href=\"http:\/\/antonlyakh.ru\/blog\/all\/koordinaty-krivyh-iz-svg-fayla\/\">описание кривых<\/a>, а фотография хранится отдельно. Размер свг-файла становится маленьким.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/antonlyakh.ru\/blog\/pictures\/svg-jpg.png\" width=\"800\" height=\"300\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Отделил «мух» от «котлет»<\/div>\n<\/div>\n<p>Второй вариант подошел.<\/p>\n<p>Если бы файлов было мало, я бы все переконвертировал вручную. Но файлов много — несколько сотен.<\/p>\n<p>В результате написал скрипт на ПХП. Он извлекает из СВГ фотографию, сохраняет ее в виде отдельного джипега и вставляет в СВГ ссылку на этот джипег. Джипег хранится локально и называется так же, как и свг-файл.<\/p>\n<p>Скрипт умный. Если в разных файлах используется одна и та же фотография, скрипт сохранит ее всего один раз и во всех файлах будет правильно на нее ссылаться. Это экономит место.<\/p>\n<p><a href=\"https:\/\/antonlyakh.ru\/done\/extract-images-from-svg\/\"><b>Скрипт для всех<\/b><\/a>.<\/p>\n<div style=\"border: 5px solid #00ab66; padding: 6px 8px; margin-left: -14px; border-radius: 2px; margin-top: 2em\"><p>Эта заметка описывает этап создания <a href=\"http:\/\/marineparasites.org\/\">виртуальной  коллекции паразитов рыб Мирового океана<\/a><\/p>\n<\/div>",
            "date_published": "2017-02-26T11:03:37+03:00",
            "date_modified": "2021-06-10T19:08:26+03:00",
            "image": "https:\/\/antonlyakh.ru\/blog\/pictures\/big-photo-of-ligophorus-haptor.jpg",
            "_date_published_rfc2822": "Sun, 26 Feb 2017 11:03:37 +0300",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/antonlyakh.ru\/blog\/all\/vyrezaem-pixelnuyu-grafiku-iz-vectornogo-fayla\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/big-photo-of-ligophorus-haptor.jpg",
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/ligophorus-on-liza-gills.gif",
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/diversity-of-haptoral-hooks.png",
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/digitized-hooks.gif",
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/image-embeded-in-svg.png",
                    "https:\/\/antonlyakh.ru\/blog\/pictures\/svg-jpg.png"
                ]
            }
        }
    ],
    "_e2_version": 3559,
    "_e2_ua_string": "E2 (v3559; Aegea)"
}