вместо этого есть лучшее решение:
на Extensions -> Images -> Extract Image...
, здесь вы можете сохранить выбранное растровое изображение в файл. Однако это расширение работает странно и почему-то работает довольно медленно (но отлично).
еще одно замечание: это расширение является громоздким и тихо умирает на больших изображений. Кроме того, с большим количеством растровых изображений он может увеличить использование памяти inkscape до ужасающих уровней (например, 3 ГБ после извлечения только нескольких изображений).
потому что я получил около 20 svg-файлов с около 70 растровыми изображениями в каждом, каждое изображение размером не менее 1 МБ, мне нужно было другое решение. После короткой проверки с помощью Denilson Sá tip Я разработал следующий php скрипт, который извлекает изображения из svg файлов:
#!/usr/bin/env php
<?php
$svgs = glob('*.svg');
$existing = array();
foreach ($svgs as $svg){
mkdir("./{$svg}.images");
$lines = file($svg);
$img = 0;
foreach ($lines as $line){
if (preg_match('%xlink:href="data:([a-z0-9-/]+);base64,([^"]+)"%i', $line, $regs)) {
$type = $regs[1];
$data = $regs[2];
$md5 = md5($data);
if (!in_array($md5, $existing)) {
$data = str_replace(' ', "\r\n", $data);
$data = base64_decode($data);
$type = explode('/', $type);
$save = "./{$svg}.images/{$img}.{$type[1]}";
file_put_contents($save, $data);
$img++;
$existing[] = $md5;
}
} else {
$result = "";
}
}
}
echo count($existing);
таким образом, я могу получить все изображения, которые я хочу, и md5 спасает меня от получения повторяющихся изображений.
бьюсь об заклад, должен быть другой способ, который намного проще, но это зависит от разработчиков inkscape лучше.