Существует ли автоматизированный способ удаления обрезанных областей встроенных изображений для оптимизации размера файла Inkscape SVG?

Я готовлю некоторые рисунки для научной публикации с помощью Inkscape. Эти рисунки представляют собой файлы SVG, содержащие встроенные растровые изображения, которые довольно велики, но на самом деле отображается только небольшая прямоугольная обрезанная область каждого изображения. Пример изображения показан ниже (сам SVG доступен здесь ):

введите описание изображения здесь

Эти изображения в конечном итоге будут встроены в документ PDF. Чтобы размер файла документа был достаточно небольшим, я ищу способ уменьшить общий размер файла, «выбрасывая» пиксели, выходящие за пределы прямоугольников обрезки.

Я мог бы сделать это, вручную обрезав каждое изображение во внешнем редакторе, затем повторно импортировав его в SVG, переместив его, масштабируя и т. д., чтобы он соответствовал текущему блоку клипа. Хотя это довольно утомительно. В идеале я хотел бы иметь возможность быстро и легко конвертировать между «рабочей копией», где я могу редактировать прямоугольники отсечения, и «оптимизированной копией», которая содержит только те пиксели, которые я действительно хочу отображать.

Есть ли автоматизированный способ сделать это с помощью Inkscape или другого инструмента? Меня также интересуют любые потенциальные решения, которые работают с файлами PDF или EPS.

Ответы (2)

1) Обходной путь копирования растрового изображения:

  • Выберите растровое изображение с обтравочной маской и нажмите ALT + B (создать копию растрового изображения).
  • Удалить исходное изображение.

Разрешение копии растрового изображения можно установить в меню «Правка» > «Установки» > «Растровые изображения» .

2) Обходной путь фильтра:

  • Примените фиктивные фильтры к обрезанным растровым изображениям (например, «Фильтры» > «Заливка и прозрачность» > «Смешать» с параметрами по умолчанию).
  • Установите флажок Растрировать эффекты фильтра в окне экспорта PDF.

3) Встроить и обрезать расширение:

http://cellbio.emory.edu/bnanes/svg-embed-and-crop/

Самая большая проблема расширения заключается в том, что оно не работает, если растровое изображение уже встроено (и не связано с файлом).

Для описанного вами варианта использования я, вероятно, порекомендовал бы изучить язык разметки документов LaTex.

https://en.wikipedia.org/wiki/LaTeX

По сути, вы пишете разметку, чтобы придать семантическое значение содержимому вашего документа. Эта семантическая разметка затем может быть оформлена и преобразована в файл PDF для цифрового распространения.

Я рекомендую это для вас, так как вы можете использовать макросы LaTex, такие как graphicxи/или, adjustboxчтобы указать обрезку включенного изображения. Когда окончательный документ будет обработан, LaTex включит в размер файла только необрезанные участки изображения.

Вот хороший поток SE с большим количеством информации об изучении LaTex: https://tex.stackexchange.com/questions/11/what-are-good-learning-resources-for-a-latex-beginner

Спасибо за ваше предложение - я уже использую LaTeX для сборки окончательного документа. Насколько я могу судить, обрезка с помощью graphicxи/или adjustboxделает более или менее то же самое, что и обрезка в Inkscape — она маскирует ненужные части изображения, но не удаляет базовые пиксельные данные (и, следовательно, не оказывает существенного влияния на изображение). размер файла). Кроме того, я не вижу простого способа обрезать отдельные части изображения в более сложной фигуре с помощью LaTeX.