Clutter.Image Properties Загрузка изображения с диска

Используя 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. Кто-нибудь знает, где я могу это найти, или знает, как называется свойство filename/uri в ClutterImages?


person BlackVegetable    schedule 05.06.2013    source источник


Ответы (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.

person ebassi    schedule 06.06.2013
comment
Я получаю imports.gi.Gdk.Pixbuf is undefined. Я что-то упускаю? (Убунту 20.04) - person Serrano; 07.06.2020
comment
GdkPixbuf — это отдельный модуль; вы хотите: imports.gi.GdkPixbuf. - person ebassi; 07.06.2020