que tienen un código que se parece a esto:¿Cómo escribo una imagen en un archivo SVG usando cairo?
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);
Sin embargo, el SVG siempre parece dañado. La imagen no está escrita correctamente, y todos los comandos de dibujo siguientes no funcionan. Cambiar el tipo de superficie a PS, es decir:
cairo_surface_t * surface = cairo_ps_surface_create("0.ps", 512, 512);
produce un documento PS perfectamente correcto. Cualquier ayuda para arreglar el SVG sería apreciada.
EDITAR: Se olvidó de proporcionar la información de la versión. Cairo 1.10.2 dado por cairo_version_string(). g ++ 4.52 Correr en Ubuntu 11.04
EDITAR (2): Ok, he remontado esto a problemas PNG con El Cairo y descubrió que cairo_surface_write_to_png no se comporta como se esperaba tampoco. Tanto esta función como el intento de incrustar una imagen en un SVG provocan "errores de memoria", y todavía no sé por qué.
Gracias, pero esto no soluciona el problema. Ver mi publicación editar – Scott
OK. En cuanto a su versión anterior, esta debería ser 'CAIRO_SVG_VERSION_1_1'. En el problema PNG, ¿puedes 'cair_image_surface_create_from_png()' y luego escribir la superficie en un PNG nuevo y hacer que el archivo se corrompa? ¿O esto funciona correctamente? – Seth