在C / Linux中显示图像的最简单方法是什么?

时间:2009-03-31 22:22:50

标签: c linux image graphics

我对C进行数值计算很满意,但不适合图形编程。我在Linux(gcc,ubuntu)的命令行程序中有一个Nx by Ny by 3 RGB矩阵,我想用它弹出一个窗口作为图像。最简单的方法是什么?它必须相对较快,因为我会经常更新图像。

由于

6 个答案:

答案 0 :(得分:6)

以下是如何使用C在Gtk2上显示和图像。您可以在tutorial网站上找到更多信息(包括Gtk2)。

#include <gtk/gtk.h>

void destroy(void) {
  gtk_main_quit();
}

int main (int argc, char** argv) {
  GtkWidget* window;
  GtkWidget* image;

  gtk_init (&argc, &argv);


  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  image  = gtk_image_new_from_file(argv[1]);

  gtk_signal_connect(GTK_OBJECT (window), "destroy",
             GTK_SIGNAL_FUNC (destroy), NULL);

  gtk_container_add(GTK_CONTAINER (window), image);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

以下是如何编译它:

gcc -Wall img.c -o img `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

答案 1 :(得分:2)

您可以尝试使用图像magick它似乎有一个功能,用最少量的工作将图像显示到x窗口。我过去曾使用过magick图像并对它感到满意。我没有尝试过这个特定的功能。

Display function

答案 2 :(得分:1)

C语言本身没有任何内置图形功能。您可以使用Qt,gtk,wxWidgets等图形工具包。您还可以构建一个图像文件(BMP is pretty simple),然后启动(使用fork和exec)应用程序来查看它。 Ubuntu默认使用gnome,您可以使用命令行参数分叉“gnome-open”,该参数是您创建的文件的名称,然后gnome-open将启动与文件类型相关联的任何应用程序。

答案 3 :(得分:1)

听起来好像你正在做一些科学计算,只需要快速显示结果。

gnuplot之类的东西可能会比学习通用窗口工具包更有用。它是一个通用的绘图实用程序,专门用于显示数据集。

答案 4 :(得分:0)

将图像绘制到像素图,创建X窗口(或分配帧缓冲区),并将像素图写入窗口。

或者,看看ImageMagick的display命令的实现。

如果您不介意学习GTK +,那么这可能是最直接的方式。创建一个窗口和一个drawable,并使drawable成为窗口的子项。创建图像的像素图并将其绘制到drawable。开罗将简化这一过程,因为您只需调整图像格式即可使其正常工作。

答案 5 :(得分:0)

cairo图形库也是一种很好的方法,请参阅http://cairographics.org/。它是跨平台的,相当高效,可以让你使用Gnome / KDE / Windows或只是简单地生成图像文件。它专为矢量而设计,因此也能很好地处理剪辑,字体和缩放。