Il y a une meilleure solution à la place:
aller à Extensions -> Images -> Extract Image...
, là, vous pouvez enregistrer l'image raster sélectionnée sous forme de fichier. Cependant, cette extension fonctionne bizarrement et fonctionne en quelque sorte assez lentement (mais parfaitement bien).
Autre remarque: cette extension est encombrante et meurt silencieusement sur des images grandes et variées. De plus, avec un grand nombre d'images raster, cela peut augmenter l'utilisation de la mémoire d'Inkscape à des niveaux horribles (comme 3 Go après seulement une poignée d'images extraites).
Parce que j'ai environ 20 fichiers svg avec environ 70 images raster chacune, chaque image d'au moins 1 Mo, j'avais besoin d'une solution différente. Après une courte vérification à l'aide de la pointe Denilson Sá, j'ai conçu le script php suivant, qui extrait les images des fichiers 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 cette façon, je peux obtenir toutes les images que je veux et md5 m'évite d'obtenir des images répétées.
Je parie qu'il doit y avoir un autre moyen beaucoup plus simple, mais c'est aux développeurs d'Inkscape de le faire mieux.