Ada solusi yang lebih baik sebagai gantinya:
pergi ke Extensions -> Images -> Extract Image...
, di sana Anda dapat menyimpan gambar raster yang dipilih sebagai file. Namun ekstensi ini bekerja aneh dan entah bagaimana bekerja agak lambat (tapi sangat baik).
Catatan lain: ekstensi ini rumit dan mati secara diam-diam di berbagai gambar besar. Juga, dengan sejumlah besar gambar raster, ia dapat melonjak penggunaan memori inkscape ke tingkat yang mengerikan (seperti 3GB setelah hanya beberapa gambar diekstraksi).
Karena saya punya sekitar 20 file svg dengan masing-masing sekitar 70 gambar raster, masing-masing gambar berukuran setidaknya 1MB, saya membutuhkan solusi yang berbeda. Setelah pemeriksaan singkat menggunakan Denilson Sá tip saya membuat skrip php berikut, yang mengekstrak gambar dari 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);
Dengan cara ini saya bisa mendapatkan semua gambar yang saya inginkan, dan md5 menyelamatkan saya dari mendapatkan gambar yang diulang.
Saya yakin pasti ada cara lain yang jauh lebih sederhana, tetapi terserah inkscape devs untuk melakukannya dengan lebih baik.