Hay una mejor solución en su lugar:
vaya a Extensions -> Images -> Extract Image...
, allí puede guardar la imagen ráster seleccionada como un archivo. Sin embargo, esta extensión funciona de manera extraña y de alguna manera funciona bastante lento (pero perfectamente bien).
Otra nota: esta extensión es engorrosa y muere en silencio en varias imágenes grandes. Además, con una gran cantidad de imágenes ráster, puede aumentar el uso de memoria de Inkscape a niveles horrendos (como 3GB después de solo un puñado de imágenes extraídas).
Debido a que tengo alrededor de 20 archivos svg con aproximadamente 70 imágenes ráster en cada uno, cada imagen de al menos 1 MB de tamaño, necesitaba una solución diferente. Después de una breve comprobación con el consejo de Denilson Sá , ideé el siguiente script php, que extrae imágenes de los archivos 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);
De esta forma puedo obtener todas las imágenes que quiero, y md5 me evita obtener imágenes repetidas.
Apuesto a que debe haber otra forma que sea mucho más simple, pero depende de los desarrolladores de Inkscape hacerlo mejor.