标签: cairo

与开罗的大图像

我必须用cairo渲染一个非常大的图像(>50.000²像素).为了做到这一点而不耗尽内存我一个接一个地渲染图像的部分(<1.000²像素),然后将它们合并在一起.

  1. 创建1000x1000曲面
  2. 转换为当前部分的位置
  3. 绘制图像(使用pycairo调用绘图指令)
  4. 将图像渲染/保存到文件(cairo_surface_write_to_png)
  5. 重复下一部分

因为cairos剪切算法比我自己更快,所以第三步绘制整个图像,即使只有一部分是可见的.大多数CPU在步骤3中使用(通过python).大部分内存用于步骤4(通过cairo).

有没有办法加快速度?像这样的东西?

  1. 创建1000x1000曲面
  2. 画图像
  3. 将所有内容移动到当前部件的位置
  4. 将图像渲染/保存到文件
  5. 用下一部分重复3

要么

  1. 创建50000x50000曲面
  2. 画图像
  3. 仅将图像的当前部分渲染/保存到文件
  4. 用下一部分重复3

python cairo

5
推荐指数
1
解决办法
918
查看次数

gjs cairo上下文绘图不在杂乱窗口中显示

我正在尝试使用javascript绑定将一个简单的开罗绘图绘制到一个混乱的窗口.我的问题是,除了命名略有不同的函数的一半,无论我尝试什么,都没有显示开罗绘图.我使用了python的一个例子,它可以工作,并将它移植到javascript.我也在使用内省来获取Clutter模块实例.我也在使用gjs版本0.7.14.谁能告诉我出了什么问题.

下面是我正在使用的示例代码.


const cairo = imports.cairo;
const clutter =  imports.gi.Clutter;

function on_button_press_event (stage, event) {
    clutter.main_quit();
}

function draw(cairo_tex) {
    var context = cairo_tex.create();


    context.scale(200, 200);
    context.setLineWidth(0.1);
    var colour2 = new clutter.Color();
    colour2.from_string('#dd000088');
    clutter.cairo_set_source_color(context, colour2);
    context.translate(0.5, 0.5);
    context.arc(0, 0, 0.4, 0, Math.PI * 2);
    context.stroke();
}

function main () {
    clutter.init(0, null);
    var stage = new clutter.Stage();
    var colour = new clutter.Color();
    colour.from_string("#ffccccff");
    stage.set_color(colour);
    stage.set_size(400, 300);
    stage.connect('button-press-event',  on_button_press_event);
    stage.connect('destroy', clutter.main_quit);

    var cairo_tex = new clutter.CairoTexture.new(200, 200);
    cairo_tex.set_position((stage.get_width() - 200) / …
Run Code Online (Sandbox Code Playgroud)

javascript cairo clutter

5
推荐指数
1
解决办法
1110
查看次数

Can Cairo(图形库)可用于渲染数学公式和图片(乳胶风格)吗?

它是否需要完全成熟的unicode字符呈现的依赖关系,还是可以读取和呈现任何平台(Linux/Max/Windows)本机字体字形而没有太多问题?

它可以在生成的pdf文件中导入/渲染eps/pdf/svg,还是我必须手动解析图像文件,并在Cairo中重绘它?

c rendering vector-graphics image-formats cairo

5
推荐指数
1
解决办法
938
查看次数

将PIL图像转换为Cairo ImageSurface

我正在尝试从PIL图像创建一个cairo ImageSurface,到目前为止我的代码是:

im = Image.open(filename)
imstr = im.tostring()
a = array.array('B', imstr)
height, width = im.size
stride = cairo.ImageSurface.format_stride_for_width(cairo.FORMAT_RGB24, width)
return cairo.ImageSurface.create_for_data(a, cairo.FORMAT_ARGB24, width, height, stride)
Run Code Online (Sandbox Code Playgroud)

但是这给了我

TypeError: buffer is not long enough.
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么会这样,也许我对图像格式不太了解.

我正在使用cairo 1.10.

python cairo python-imaging-library

5
推荐指数
2
解决办法
3063
查看次数

py2cairo安装失败.检查'cairo'> = 1.10.0:未找到

我正在尝试使用32位Python 2.7(来自python.org)和来自MacPorts的cairo 1.10.2在我的OS X 10.5上安装PyCairo(来自tarball源码).所以我正在安装"py2cairo".当我跑步时python ./waf configure,我明白了

Checking for 'cairo' >= 1.10.0           : not found 
Run Code Online (Sandbox Code Playgroud)

我这里有cairo文件......

$ ls /opt/local/include/cairo
cairo-deprecated.h          cairo-gobject.h             cairo-script-interpreter.h  cairo-tee.h                 cairo-xlib-xrender.h        cairo.h
cairo-features.h            cairo-pdf.h                 cairo-script.h              cairo-version.h             cairo-xlib.h
cairo-ft.h                  cairo-ps.h                  cairo-svg.h                 cairo-xcb.h                 cairo-xml.h
$ ls /opt/local/lib/cairo
cairo-fdr.0.so*         cairo-fdr.la*           cairo-sphinx.0.so*      cairo-sphinx.la*        libcairo-trace.0.dylib* libcairo-trace.dylib@
cairo-fdr.a             cairo-fdr.so@           cairo-sphinx.a          cairo-sphinx.so@        libcairo-trace.a        libcairo-trace.la*
Run Code Online (Sandbox Code Playgroud)

但是我将哪个目录传递给哪个参数?这些在指定cairo库时看起来不相关:

$ python ./waf --help
  ./options()
waf [commands] [options]

Main commands (example: ./waf build -j4)
  build    : executes the build
  clean    : cleans the project
  configure: configures the …
Run Code Online (Sandbox Code Playgroud)

python cairo pycairo

5
推荐指数
1
解决办法
4905
查看次数

Pango和Cairo(Pycairo)适合宽度线宽

我有几行文本,我希望每个文本都适合宽度(缩放字体大小)到Context的宽度.有办法做到这一点吗?我正在使用pangocairo和python.

python pango cairo pycairo

5
推荐指数
1
解决办法
856
查看次数

开罗:如何创建路径扭曲的文本?

我希望我在开罗的文字遵循一条绘制的道路.同样的事情也来.

现在这个链接来自开罗邮件列表中的一个帖子,该帖子声称已经对此进行了编码.只有链接到代码svn.gnome.org似乎已被删除.我的问题是,是否有人知道cairotwisted邮件列表中提到的此代码是否仍然存在?如果没有,有人可以给我一些如何做的指导方针吗?

我正在使用luaAPI开罗.

lua cairo

5
推荐指数
1
解决办法
834
查看次数

用开罗加载svg

我想用Cairo库加载一个SVG文件,对它应用一些转换.然后我想用glTexture显示我的svg.

但我只是找到创建svg文件但不加载svg的函数.

c++ svg cairo

5
推荐指数
1
解决办法
3934
查看次数

knitr中的特殊字符(cairoDevice不起作用)

我的knitr文档中的特殊字符有问题.普通文本工作正常,但图片上标题或轴名称中的抛光字母没有. 在此输入图像描述

我尝试通过安装cairoDevice包来解决这个问题.但它仍然无效.实际上我不确定这个包是否正常工作,因为我还必须安装Rgtk2包,并且它也存在问题.除了cairoDevice之外还有其他任何方式来获取信件吗?如果不是如何让它正常工作?

这是我的knitr文件problem.Rnw:

\documentclass[12 pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage{geometry}
\geometry{total={210mm, 297mm}, left=17mm, right=17mm, top=17mm, bottom=17mm}
\usepackage[font=footnotesize,labelfont=bf]{caption}
\usepackage{url}
\usepackage[colorlinks=true]{hyperref}
\hypersetup{linkcolor=blue}

<<include=F>>=
source("My path/plot.R")
@

<<include=F>>=
library(knitr)
library(RGtk2)
library(Cairo)
library(cairoDevice)

#ustawienia globalne
opts_chunk$set(fig.path='figure/', fig.align='center', fig.show='asis', fig.pos='ht!', dev='CairoPDF')

@

\begin{document}

<<MusicBad, echo=F, fig.width=5, fig.height=5, out.width='.5\\linewidth', fig.cap='B??dne zastosowanie wykresu liniowego.'>>=

plot.music.bad

@
\end{document}
Run Code Online (Sandbox Code Playgroud)

在这里我的plot.R档案:

library(ggplot2)

#create data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)

#create line graph …
Run Code Online (Sandbox Code Playgroud)

graphics r cairo knitr

5
推荐指数
1
解决办法
532
查看次数

GTK中的Gtk主题#(Windows)

我正在尝试改变GTK#中的主题(操作系统:Windows,IDE:Xamarin).但我接下来的问题:

  1. 我只能找到一个正确呈现的主题,它是"Orta".一切都很好,除了滞后和冻结.这是我的代码:

    string Resource_File = "Orta\\gtk-2.0\\gtkrc"; Application.Init (); Gtk.Rc.AddDefaultFile (Resource_File); Gtk.Rc.Parse (Resource_File); MainWindow win = new MainWindow (); win.Show (); Application.Run ();

    当我改变Paned或点击按钮的大小时,我得到了GUI冻结(我已经问过这个问题).只有在使用此主题时才会出现此问题,其他主题都可以正常工作.我使用搜索并发现了一些意见,关于这是由于使用Cairo渲染图形(其中之一).

  2. 如果我尝试使用不同的主题,很多GUI元素在我的GTK#应用程序中没有正确呈现,但它们在GTK主题选择器中正确呈现.如果主题在GTK主题选择器中正确显示,那么我尝试在我的Gtk#app中使用所选的gtkrc文件(如"Orta"中的示例所示),但几乎总是,大多数小部件都没有正确显示(这里是一个例子)

所以我有几个问题:

  1. 如何选择工作主题?
  2. 如何为GTK#(Windows)设置主题?
  3. 什么Gtk#开源应用程序使用主题和如何?
  4. 在GTK#app中改变GUI风格的其他方法是什么?
  5. 为什么"Orta"主题会冻结?

所以我需要你的帮助!谢谢!

gtk mono gnome gtk# cairo

5
推荐指数
0
解决办法
1729
查看次数