<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Математик среди биологов: заметки с тегом виртуальная коллекция</title>
<link>https://antonlyakh.ru/blog/tags/virtualnaya-kollekciya/</link>
<description>Я немного умею складывать, но от вычитания у меня всегда кружится голова</description>
<author>Антон Лях</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Лях</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Я немного умею складывать, но от вычитания у меня всегда кружится голова</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Вырезаем растровую графику из СВГ</title>
<guid isPermaLink="true">https://antonlyakh.ru/blog/all/vyrezaem-pixelnuyu-grafiku-iz-vectornogo-fayla/</guid>
<link>https://antonlyakh.ru/blog/all/vyrezaem-pixelnuyu-grafiku-iz-vectornogo-fayla/</link>
<pubDate>Sun, 26 Feb 2017 11:03:37 +0300</pubDate>
<author>Антон Лях</author>
<comments>https://antonlyakh.ru/blog/all/vyrezaem-pixelnuyu-grafiku-iz-vectornogo-fayla/</comments>
<description>
&lt;p&gt;Столкнулся с задачей.&lt;/p&gt;
&lt;p&gt;Есть фотография большого размера (более 4 тыс. пикселей по ширине), на которой запечатлены части живых организмов.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/big-photo-of-ligophorus-haptor.jpg" width="800" height="600" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Большая фотография с прикрепительными структурами плоского паразитического червя&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Организмы — это паразиты. Мизерные примитивные червячки из &lt;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"&gt;класса Моногеней&lt;/a&gt;, живущие на жабрах рыб. К жабрам они крепятся при помощи крючков.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/ligophorus-on-liza-gills.gif" width="800" height="185" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Рисунок головы кефали из работы &lt;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"&gt;Световидова&lt;/a&gt; (1964); рисунок жабр и сидящего на них паразита из работы &lt;a href="http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0142365"&gt;Лопеса-Беленгуэра с сотоварищами (2015)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Разные виды червячков внешне очень похожи. Они отличаются только формой прикрепительных крючков. У каждого таксономического рода уникальная форма крючков, но среди видов одного рода различия форм не столь очевидны. Чтобы их обнаружить, надо использовать методы морфометрического анализа.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/diversity-of-haptoral-hooks.png" width="800" height="507" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Метод главных компонент описывает разнообразие форм прикрепительных крючков разных родов моногеней. График из &lt;a href="http://link.springer.com/article/10.1007/s11230-011-9303-1"&gt;статьи Вигнона (2011)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Для выполнения морфометрического анализа мы оцифровываем форму крючков. Загружаем фотографию в Инскейп, обводим кривыми и сохраняем результат в СВГ.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/digitized-hooks.gif" width="800" height="600" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Проблема в том, что готовый файл слишком много «весит». Исходный джипег размером 800 Кб, после обводки и сохранения в СВГ, толстеет до 12 Мб. В результате мне присылают мегатонные свгешки с внедренной графикой, которые надо разместить на сервере, а он не резиновый.&lt;/p&gt;
&lt;p&gt;Я не могу выбросить фото и загрузить на сервер только векторные кривые. Потому что контуры обрисовывают несколько человек, у каждого свои особенности рисования, они ошибаются, и результаты надо перепроверять. А фотография помогает проверить правильность построения контуров.&lt;/p&gt;
&lt;p&gt;Я несколько часов пытался уменьшить размер свг-файла с графикой без потери качества. Попробовал уменьшить в Инскейпе, не получилось — размеры фотографии и свг-файла остались огромными. Потом разобрался с форматом и нашел решение.&lt;/p&gt;
&lt;p&gt;Формат СВГ поддерживает два способа хранения изображений.&lt;/p&gt;
&lt;p&gt;Первый, когда графический файл внедрен в СВГ. Это не оптимальный способ, потому что  файл не сжат. Изображение состоит из последовательности символов в &lt;a href="https://ru.wikipedia.org/wiki/Base64"&gt;позиционной системе счисления с основанием 64&lt;/a&gt; (base64). Отсюда 800 Кб превращаются в 12 Мб.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/image-embeded-in-svg.png" width="800" height="287" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Фотография, внедренная внутрь свг-файла, занимает очень много места&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Второй, когда СВГ хранит ссылку на внешний графический файл. Тогда СВГ содержит только &lt;a href="http://antonlyakh.ru/blog/all/koordinaty-krivyh-iz-svg-fayla/"&gt;описание кривых&lt;/a&gt;, а фотография хранится отдельно. Размер свг-файла становится маленьким.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://antonlyakh.ru/blog/pictures/svg-jpg.png" width="800" height="300" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Отделил «мух» от «котлет»&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Второй вариант подошел.&lt;/p&gt;
&lt;p&gt;Если бы файлов было мало, я бы все переконвертировал вручную. Но файлов много — несколько сотен.&lt;/p&gt;
&lt;p&gt;В результате написал скрипт на ПХП. Он извлекает из СВГ фотографию, сохраняет ее в виде отдельного джипега и вставляет в СВГ ссылку на этот джипег. Джипег хранится локально и называется так же, как и свг-файл.&lt;/p&gt;
&lt;p&gt;Скрипт умный. Если в разных файлах используется одна и та же фотография, скрипт сохранит ее всего один раз и во всех файлах будет правильно на нее ссылаться. Это экономит место.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://antonlyakh.ru/done/extract-images-from-svg/"&gt;&lt;b&gt;Скрипт для всех&lt;/b&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div style="border: 5px solid #00ab66; padding: 6px 8px; margin-left: -14px; border-radius: 2px; margin-top: 2em"&gt;&lt;p&gt;Эта заметка описывает этап создания &lt;a href="http://marineparasites.org/"&gt;виртуальной  коллекции паразитов рыб Мирового океана&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description>
</item>


</channel>
</rss>