C'è invece una soluzione migliore:
vai a Extensions -> Images -> Extract Image...
, lì puoi salvare l'immagine raster selezionata come file. Tuttavia questa estensione funziona in modo strano e in qualche modo funziona piuttosto lentamente (ma perfettamente bene).
Un'altra nota: questa estensione è ingombrante e muore silenziosamente su varie immagini di grandi dimensioni. Inoltre, con un gran numero di immagini raster può aumentare l'utilizzo della memoria di inkscape a livelli orrendi (come 3 GB dopo solo una manciata di immagini estratte).
Dato che ho circa 20 file svg con circa 70 immagini raster al loro interno, ciascuna delle dimensioni di almeno 1 MB, avevo bisogno di una soluzione diversa. Dopo un breve controllo usando il suggerimento di Denilson Sá ho ideato il seguente script php, che estrae immagini da file 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);
In questo modo posso ottenere tutte le immagini che desidero e md5 mi evita di ottenere immagini ripetute.
Scommetto che ci deve essere un altro modo molto più semplice, ma spetta agli sviluppatori di inkscape farlo meglio.