Bunun yerine daha iyi bir çözüm var:
gidin Extensions -> Images -> Extract Image...
, bir dosya olarak seçilen tarama görüntü var kaydedebilirsiniz. Ancak bu uzantı tuhaf çalışıyor ve bir şekilde oldukça yavaş çalışıyor (ama mükemmel derecede iyi).
Başka bir not: Bu uzantı hantal ve çeşitli büyük görüntülerde sessizce ölüyor. Ayrıca, çok sayıda raster görüntü ile, inkscape'in bellek kullanımını korkunç seviyelere çıkarabilir (sadece bir avuç görüntü çıkarıldıktan sonra 3GB gibi).
Her birinde en az 1 MB boyutunda, her birinde yaklaşık 70 tarama görüntüsü bulunan yaklaşık 20 svg dosyam olduğu için farklı bir çözüme ihtiyacım vardı. Denilson Sá ipucunu kullanarak kısa bir kontrol yaptıktan sonra svg dosyalarından görüntüleri ayıklayan aşağıdaki php betiğini tasarladım:
#!/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);
Bu şekilde istediğim tüm görüntüleri alabilirim ve md5 beni tekrarlanan görüntülerden kurtarır.
Bahse girerim, çok daha basit başka bir yol olmalı, ancak daha iyi yapmak için inkscape geliştiricilere kalmış.