我有一些看起来像这样的代码:
cairo_surface_t * surface = cairo_svg_surface_create("0.svg", 512, 512);
cairo_t * context = cairo_create(surface);
int * data = new int[512*512];
// fill the data...
cairo_surface_t * image_surface =
cairo_image_surface_for_data(data, 512, 512, 512*4);
cairo_set_source_surface(context, image_surface, 0, 0);
cairo_paint(context);
// do some other drawing ...
cairo_surface_flush(surface);
cairo_surface_finish(surface);
cairo_surface_destroy(surface);
cairo_destroy(context);
Run Code Online (Sandbox Code Playgroud)
但是,svg总是显得已损坏.图像未正确写入,并且后面的所有绘图命令都不起作用.将曲面类型更改为PS,即:
cairo_surface_t * surface = cairo_ps_surface_create("0.ps", 512, 512);
Run Code Online (Sandbox Code Playgroud)
生成一个完全正确的PS文档.任何帮助修复SVG将不胜感激.
编辑:忘了提供版本信息.由cairo_version_string()给出的开罗1.10.2.g ++ 4.52在Ubuntu 11.04上运行
编辑(2):好的,我已经用cairo追溯到PNG问题并发现cairo_surface_write_to_png也没有按预期运行.此功能和尝试在SVG中嵌入图像都会导致"内存不足错误",我仍然不知道原因.