Há uma solução melhor:
vá para Extensions -> Images -> Extract Image...
lá, você pode salvar a imagem raster selecionada como um arquivo. No entanto, esta extensão funciona de maneira estranha e, de alguma forma, funciona bem devagar (mas perfeitamente bem).
Outra observação: esta extensão é complicada e morre silenciosamente em várias imagens grandes. Além disso, com um grande número de imagens rasterizadas, ele pode elevar o uso da memória do inkscape para níveis horrendos (como 3 GB após apenas algumas imagens extraídas).
Como tenho cerca de 20 arquivos svg com cerca de 70 imagens raster cada, cada imagem com pelo menos 1 MB de tamanho, eu precisava de uma solução diferente. Após uma breve verificação usando a dica de Denilson Sá , criei o seguinte script php, que extrai imagens de arquivos 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);
Dessa forma, posso obter todas as imagens desejadas e o md5 me impede de obter imagens repetidas.
Aposto que deve haver outra maneira que seja muito mais simples, mas cabe aos desenvolvedores do inkscape fazê-lo melhor.