ImageMagick (RSVG) не будет импортировать изображения в SVG

Я пытаюсь использовать ImageMagick для конвертации файлов SVG в PNG.

Файл SVG выглядит следующим образом:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
    <image xlink:href="picture.jpg" width="200" height="200"/>
</svg>

Независимо от того, какой метод я использую, конечный результат не включает изображение. Другие элементы SVG отрисованы правильно.

Я пробовал:

convert test.svg test.png
rsvg-convert -o test.png test.svg

Я попытался изменить путь к изображению, чтобы использовать file:///, абсолютные пути, удаленные URL-адреса и вариации каждого из них в кодировке URL. Я также отформатировал свой файл с и без doctype.

Я использую librsvg 2.36.3 и ImageMagick 6.8.0-10. Мне удалось использовать фантомы для их преобразования, но это похоже на излишество для этой задачи.

Пожалуйста помоги!

1 ответ

Для меня помогла установка gtk3 (или, точнее, более конкретно "shared-mime-info". (И потом переустановка rsvg И использование абсолютного "file:///" uri для href И наличие файла образа в том же каталоге, что и файл svg)

Больше информации (я все еще не понимаю, что именно происходит):

  • Я думаю, что проблема не с rsvg напрямую, а с библиотекой gdk-pixbuf (2)

  • Я нашел место в коде, где gdk-pixbuf используется для загрузки изображения. Я подтвердил (используя printf debuggin), что он не выдает ошибку (кажется, что загружает pixbuf просто отлично), даже если URI в href не указывает на файл.

  • зависимость gtk3 должна быть необходима только для инструмента rsvg-view-3, а не для rsvg, но, похоже, она есть (или одна из зависимостей, которые появились при установке gtk3)

  • Это все еще работает даже после удаления gtk3. Он все еще работает после удаления gtk3, а затем перестройки rsvg (./configure детектирует: "gtk3: no"), поэтому я думаю, что это связано с одной из зависимостей, которые были получены при установке gtk3:

  • атк-2.10.0-1-i686

  • HiColor-значок-тема-0.12-2-любой
  • GTK-обновление-значок-кэш-2.24.22-1-i686
  • libtasn1-3.3-2-i686
  • P11-кит-0.20.1-1-i686
  • GnuTLS-3.2.5-1-i686
  • libcups-1.7.0-1-i686
  • libxinerama-1.1.3-2-i686
  • разделяемой мим-инфо-1.2-1-i686
  • libgusb-0.1.6-1-i686
  • NSPR-4.10.1-2-i686
  • JS-17.0.0-1-i686
  • polkit-0.112-1-i686
  • разделяемые цветовые профили-0.1.5-1-либо
  • dconf-0.18.0-1-i686
  • colord-1.0.2-2-i686
  • recordproto-1.14.2-1-любой
  • libxtst-1.2.2-1-i686
  • в-spi2-ядро-2.10.1-1-i686
  • в-spi2-атк-2.10.0-1-i686
  • xkeyboard-конфиг-2.10.1-1-любой
  • libxkbcommon-0.3.1-1-i686

(Я оставляю их здесь на случай, если это не та библиотека, которую я определил в конце)

Поэтому я попытался удалить эти группы в группах, а затем перестроить и протестировать. Оказывается, тот, кто заставляет это работать...

* shared-mime-info

Другие вопросы по тегам