LINUX.ORG.RU

inkscape, большой рисунок и swap


0

0

Здравствуйте.
Такая проблема. Есть большой (примерно 30 мегабайт) график в SVG. Задача: пергнать его в EPS. Делаю так:

inkscape -E 3df.eps -T 3df.svg

Инкскейп работает некоторое время, потом вываливается с ошибкой:

** (inkscape:7513): WARNING **: GC Warning: Out of Memory!  Returning NIL!

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Emergency save activated!
Emergency save completed. Inkscape will close now.
If you can reproduce this crash, please file a bug at www.inkscape.org
with a detailed description of the steps leading to the crash, so we can fix it.
** Message: Error: Inkscape encountered an internal error and will close now.

zsh: abort      inkscape -E 3df.eps -T 3df.svg



Открыл htop, снова запустил конвертирование. Вижу: инкскейп быстро сжирает всю свободную память и, игнориуя имеющийся swap, вываливается с ошибкой. Сделал 2 скриншота, для наглядности. На одном инкскейп спокойно работает, пока память есть. На другом инкскейп, за несколько секунд до падения, видно, что swap ещё дофига, но он почему-то не используется.
Скрины: 
http://gnu.xinm.googlepages.com/inkscape_htop_swap_1.png
http://gnu.xinm.googlepages.com/inkscape_htop_swap_2.png
anonymous

Извините за форматирование, на ЛОР в первый раз пишу

anonymous
()
Ответ на: комментарий от anonymous

а по теме... походу инкскейпу нужно за раз такой объём памяти что и свапа нехватает так что он сразу делает сеппуку

anonymous
()
Ответ на: комментарий от michwill

ImageMagick растровый, а svg и eps векторные. Если им конвертировать качество заметно падает.

anonymous
()

попробуй http://sk1project.org/modules.php?name=Products&product=uniconvertor

Project description

UniConvertor is a universal vector graphics translator. 
It uses sK1 engine to convert one format to another.
Development of the import/export modules for this program goes 
through different stages, quality and feature coverage are different
among formats.

Import filters:

# CorelDRAW ver.7-X3,X4 (CDR/CDT/CCX/CDRX/CMX)
# Adobe Illustrator up to 9 ver. (AI postscript based)
# Postscript (PS)
# Encapsulated Postscript (EPS)
# Computer Graphics Metafile (CGM)
# Windows Metafile (WMF)
# XFIG
# Scalable Vector Graphics (SVG)
# Skencil/Sketch/sK1 (SK and SK1)
# Acorn Draw (AFF)

Export filters:

# AI (Postscript based Adobe Illustrator 5.0 format)
# SVG (Scalable Vector Graphics)
# SK (Sketch/Skencil format)
# SK1 (sK1 format)
# CGM (Computer Graphics Metafile)
# WMF (Windows Metafile)
# PDF (Portable Document Format)
# PS (PostScript)

sdio ★★★★★
()
Ответ на: комментарий от sdio

>uniconvertor 3df.svg 3df.eps
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 979, in Load
xml_reader.parse(input_source)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.5/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 207, in feed
self._parser.Parse(data, isFinal)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 301, in start_element
self._cont_handler.startElement(name, AttributesImpl(attrs))
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 338, in startElement
getattr(self, method)(attrs)
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 935, in use
if data[0] == 'object':
TypeError: 'NoneType' object is unsubscriptable
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/uniconvertor/__init__.py", line 70, in <module>
doc = load.load_drawing(sys.argv[1])
File "/usr/lib/python2.5/site-packages/uniconvertor/app/io/load.py", line 364, in load_drawing
return load_drawing_from_file(file, filename)
File "/usr/lib/python2.5/site-packages/uniconvertor/app/io/load.py", line 337, in load_drawing_from_file
doc = loader.Load()
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 979, in Load
xml_reader.parse(input_source)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.5/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 207, in feed
self._parser.Parse(data, isFinal)
File "/usr/lib/python2.5/xml/sax/expatreader.py", line 301, in start_element
self._cont_handler.startElement(name, AttributesImpl(attrs))
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 338, in startElement
getattr(self, method)(attrs)
File "/usr/lib/python2.5/site-packages/uniconvertor/app/plugins/Filters/svgloader.py ", line 935, in use
if data[0] == 'object':
TypeError: 'NoneType' object is unsubscriptable

anonymous
()
Ответ на: комментарий от anonymous

Ты это разработчикам sK1 закинь.

можешь здесь свой .svg (линк) выложить?
интересно посмотреть повторяется ли эта проблема на др. дистрибутивах

sdio ★★★★★
()
Ответ на: комментарий от sdio

К сожалению выложить здесь не могу так как график относится к ДСП-работе. Впринципе можно взять gnu-octave и сделать пирмерно так: #! /usr/bin/octave -qf load "dpdg.txt" abs_dpdg load "omg.txt" omega load "per.txt" perepad mesh(perepad,omega,abs_dpdg) view(115,50); xlabel('P/P_k'); ylabel('omega [Гц]'); zlabel('dp/dg') print -dsvg 3d.svg

Здесь abs_dpdg - массив 2501x101. Модно просто взять такой же по размеру массив и забить его случайными данными.

anonymous
()
Ответ на: комментарий от anonymous

есть ещё batik, но он на яве, а тут разговоры про нехватку памяти :)

ip ★★★★
()
Ответ на: комментарий от anonymous

Сгенерируй такой файл, проверь, что он валит конвертор и выложи его.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.