【问题标题】:Clutter.Image Properties -- Loading an image from diskClutter.Image 属性——从磁盘加载图像
【发布时间】:2013-06-05 17:49:29
【问题描述】:

使用 Javascript,因此非常糟糕的内省文档,我正在尝试创建一个 ClutterImage,它应该替换已弃用的 ClutterTexture。我无法确定用于指定要为此类图像加载的文件名/uri 的属性名称:

const Clutter = imports.gi.Clutter;

Clutter.init(null);

let stage = new Clutter.Stage();

stage.connect("destroy", Clutter.main_quit);
stage.title = "Test";

stage.set_background_color(new Clutter.Color({
    red  : 0,
    blue : 128,
    green : 64,
    alpha : 255
}));

let img = new Clutter.Image({
    uri : 'some-image.jpg'
});

stage.add_actor(img);
Clutter.main();

我当前的错误是:Error: No property uri on this GObject ClutterImage,这当然意味着我尝试用于 uri 的属性的名称无效。有谁知道我在哪里可以查到这个,或者知道ClutterImages 中的文件名/uri 属性是什么?

【问题讨论】:

    标签: javascript clutter


    【解决方案1】:

    没有用于将纹理数据从文件加载到Clutter.Image 实例的属性或函数。

    您应该使用GdkPixbuf 从文件、缓冲区或流中加载图像数据,然后将其放入Clutter.Image 中,例如:

    const Clutter = imports.gi.Clutter;     
    const Cogl = imports.gi.Cogl;           
    const GdkPixbuf = imports.gi.GdkPixbuf; 
    
    const pixbuf = GdkPixbuf.Pixbuf.new_from_file('...');
    const image = new Clutter.Image();
    
    image.set_data(pixbuf.get_pixels(),
                   pixbuf.get_has_alpha() ? Cogl.PixelFormat.RGBA_8888
                                          : Cogl.PixelFormat.RGB_888,
                   pixbuf.get_width(),
                   pixbuf.get_height(),
                   pixbuf.get_rowstride());
    

    这应该有效;如果不是,那么这是一个自省问题,可能需要在GdkPixbuf 中进行一些调整。

    【讨论】:

    • 我收到imports.gi.Gdk.Pixbuf is undefined。我错过了什么吗? (Ubuntu 20.04)
    • GdkPixbuf 是一个单独的模块;你想要:imports.gi.GdkPixbuf.
    猜你喜欢
    • 2018-10-23
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2022-06-27
    • 2019-03-06
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多