免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7735 | 回复: 8
打印 上一主题 下一主题

求教GTK显示图像像素的方法(pixmap) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-17 09:22 |只看该作者 |倒序浏览
各位大侠:本人在linux 下采集摄像头的图像数据,打算用GDK中pixmap 来显示,用到以下API:

       GdkBitmap *mask;
       GdkPixmap *gdkpixmap;
       GtkWidget *image;
   
1);gdkpixmap=gdk_pixmap_create_from_data(MainWindow->window,(gchar *)vd->map, VIDEO_WIDTH,      VIDEO_HEIGTH,24,&MainWindow->style->fg[GTK_STATE_NORMAL],&MainWindow->style->bg[GTK_STATE_NORMAL]);         
2);mask=( GdkBitmap *)gdk_bitmap_create_from_data(NULL,(gchar *)vd->map,VIDEO_WIDTH, VIDEO_HEIGTH);       
                                 
3);image=gtk_image_new_from_pixmap(gdkpixmap,mask);  

最后把image 放到box 显示,gtk_box_pack_start(GTK_BOX(hbox1),image,0,0,0);
        gtk_widget_show(hbox1);
        gtk_widget_show(image);       
但显示的是黑白条纹没有显示正确的图像;---请问是什么原因??????????????????????????


图像数据是OK的,我是可以保存为.BMP图片了
1) gdkpixmap=gdk_pixmap_create_from_xpm(MainWindow->window,&mask,NULL,"/root/CH1.bmp");
2) image=gtk_pixmap_new(gdkpixmap,mask);
3: gtk_widget_show(hbox1);
4: gtk_widget_show(image); 是能显示图片的---OK 的~~~!!!!

请问各位我用上面第一中方法直接显示为什么不行,谢谢指教~~!!

[ 本帖最后由 wjc520_a 于 2006-7-17 09:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-17 10:12 |只看该作者
你的图像是位图吗?即黑白二值的图像?

如果不是位图,那应该用pixbuf,具体参考gdk-pixbuf中的Image Data in Memory一章。

论坛徽章:
0
3 [报告]
发表于 2006-07-17 13:49 |只看该作者

谢谢答疑

谢谢大天使的回答,

当gdk_pixbuf_new_from_data()后  用 :gtk_image_new_from_pixbuf();????????

能不能提供些关于Gdk 的参考资料呢???
gdk_pixbuf_new_from_data()里面的有些参数不怎么明白,还有 色盘怎么设置??

你说的---具体参考gdk-pixbuf中的Image Data in Memory一章。

是不是系统上的/usr/share/doc/gdk 的资料呢??

再次谢谢大天使~!!!

论坛徽章:
0
4 [报告]
发表于 2006-07-17 14:38 |只看该作者
大天使是表示你发帖子数量的级别(我的帖子大多数是灌水而来)。

GTK+的参考资料最主要以官方站点为主,不过一般装GTK+的时候应该附带安装了相关的文档。
http://www.gtk.org/api/

论坛徽章:
0
5 [报告]
发表于 2006-07-17 14:57 |只看该作者
assiss 你好酷噢~!
谢谢

论坛徽章:
0
6 [报告]
发表于 2006-07-18 09:17 |只看该作者
GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data,
                                     GdkColorspace colorspace,
                                     gboolean has_alpha,
                                     int bits_per_sample,
                                     int width, int height,
                                     int rowstride,
                                     GdkPixbufDestroyNotify destroy_fn,
                                     gpointer destroy_fn_data);
后面的两个参数看不明白,哪位朋友能解释一下,谢~!

论坛徽章:
0
7 [报告]
发表于 2006-07-21 09:34 |只看该作者
please help me

论坛徽章:
0
8 [报告]
发表于 2006-07-21 15:54 |只看该作者
  1. #include <gtk/gtk.h>

  2. static void destroy_fn(unsigned char* pixels, gpointer data);

  3. int main(int argc, char** argv)
  4. {
  5.         gtk_init(&argc, &argv);

  6.         GtkWidget* window;

  7.         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  8.         g_signal_connect(G_OBJECT(window), "destroy",
  9.                         G_CALLBACK(gtk_main_quit), NULL);

  10.         gtk_widget_show_all(window);

  11.         unsigned char* data = new unsigned char[3*25];

  12.         printf("data的地址\t == %p\n", data);
  13.        
  14.         for(int i=0;i<75;i++)
  15.         {
  16.                 data[i] = i%26 + 'A';
  17.         }

  18.         GdkPixbuf* buf;
  19.         buf = gdk_pixbuf_new_from_data(data, GDK_COLORSPACE_RGB,
  20.                         false,
  21.                         8,
  22.                         5,5,15,
  23.                         destroy_fn,NULL);

  24.         g_object_unref(G_OBJECT(buf));

  25.         gtk_main();

  26.         return 0;

  27. }

  28. //可以在这里看出 destroy_fn 的用途。
  29. static void destroy_fn(unsigned char* pixels, gpointer data)
  30. {
  31.         printf("pixels 的地址\t == %p\n", pixels);
  32.         printf("%s\n", pixels);
  33.         delete []pixels;
  34. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2006-08-10 09:04 |只看该作者
搞了一段时间其他的  现在又回来看GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data,
                                     GdkColorspace colorspace,
                                     gboolean has_alpha,
                                     int bits_per_sample,
                                     int width, int height,
                                     int rowstride,
                                     GdkPixbufDestroyNotify destroy_fn,
                                     gpointer destroy_fn_data);
始终还是不明白楼上的,现在还是显示不到图像,int rowstride,GdkPixbufDestroyNotify destroy_f,
                                     gpointer destroy_fn_data,三个参数还是不明白~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP