Chinaunix
标题:
求教GTK显示图像像素的方法(pixmap)
[打印本页]
作者:
wjc520_a
时间:
2006-07-17 09:22
标题:
求教GTK显示图像像素的方法(pixmap)
各位大侠:本人在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 编辑
]
作者:
assiss
时间:
2006-07-17 10:12
你的图像是位图吗?即黑白二值的图像?
如果不是位图,那应该用pixbuf,具体参考gdk-pixbuf中的Image Data in Memory一章。
作者:
wjc520_a
时间:
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 的资料呢??
再次谢谢大天使~!!!
作者:
assiss
时间:
2006-07-17 14:38
大天使是表示你发帖子数量的级别(我的帖子大多数是灌水而来)。
GTK+的参考资料最主要以官方站点为主,不过一般装GTK+的时候应该附带安装了相关的文档。
http://www.gtk.org/api/
作者:
wjc520_a
时间:
2006-07-17 14:57
assiss 你好酷噢~!
谢谢
作者:
wjc520_a
时间:
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);
后面的两个参数看不明白,哪位朋友能解释一下,谢~!
作者:
wjc520_a
时间:
2006-07-21 09:34
please help me
作者:
x2
时间:
2006-07-21 15:54
#include <gtk/gtk.h>
static void destroy_fn(unsigned char* pixels, gpointer data);
int main(int argc, char** argv)
{
gtk_init(&argc, &argv);
GtkWidget* window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
unsigned char* data = new unsigned char[3*25];
printf("data的地址\t == %p\n", data);
for(int i=0;i<75;i++)
{
data[i] = i%26 + 'A';
}
GdkPixbuf* buf;
buf = gdk_pixbuf_new_from_data(data, GDK_COLORSPACE_RGB,
false,
8,
5,5,15,
destroy_fn,NULL);
g_object_unref(G_OBJECT(buf));
gtk_main();
return 0;
}
//可以在这里看出 destroy_fn 的用途。
static void destroy_fn(unsigned char* pixels, gpointer data)
{
printf("pixels 的地址\t == %p\n", pixels);
printf("%s\n", pixels);
delete []pixels;
}
复制代码
作者:
wjc520_a
时间:
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,三个参数还是不明白~!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2