私は些細なことをやろうとしていますが、ClutterImage
で何を試しても、Unable to load image data
というエラーメッセージが表示されます。私が使用している言語はValaなので、Clutter用のVapiファイルが間違っている可能性があります。 GdkPixbuf
私にはうまく見えますが、GtkImage
と設定できます。エラーなしでディスクに保存できますが、画像ファイルをGdkPixbuf
- >ClutterImage
に戻すと、クラッターと同じエラーが表示されます。私もCOGL_PIXEL_FORMAT_*
のすべての値を試してみましたが、それは常に同じです、イメージデータはRGB24
形式ですが、私は肯定的です。GdkPixbufを使ってClutterImageを設定する
私のコードは次のとおりです。私はhttps://valadoc.org/clutter-1.0/Clutter.Image.set_data.htmlで見ることができますマニュアルのCの例では何から採用しました
private Clutter.Content image;
construct {
...
image = new Clutter.Image();
...
}
public void set_image (Gdk.Pixbuf pixbuf) {
lock (image) {
unowned uint8[] pixels = pixbuf.get_pixels_with_length();
assert (pixels.length == pixbuf.width * pixbuf.height * 3);
try {
image.set_data (pixels,
Cogl.PixelFormat.RGB_888;
pixbuf.width,
pixbuf.height,
pixbuf.rowstride);
} catch (Error e) {
critical (e.message);
}
}
}
。
私はValaが吐き出すCコードを含めることができますが、それは私には正しいと思われます。
私はClutterImage
が機能しないと思っていたので、pixbuf.save (...)
を使って保存したイメージファイルでhttps://github.com/GNOME/clutter/blob/master/examples/image-content.cの例を試してみました。だから私はGtkClutterEmbed
ウィジェットで画像オブジェクトをClutterActor
として使用しようとしている可能性があると考えています。そこに見ることが本当に多くありませんがあります、コードは私にステージがClutterActor
で、ClutterImage
は俳優の内容として設定されていることで、作品の例では何と同じように見える
var embed = new GtkClutter.Embed();
viewport.add (embed);
var stage = embed.get_stage();
image = new Clutter.Image();
stage.content = image;
です。だから私は今や少し損失があります。
valac --pkg cogl-1.0 --pkg clutter-gtk-1.0 --pkg gtk+-3.0 clutter-image-content.vala
画像にアルファチャンネルがありますか?その場合、RGBA8888でなくRGBA8888である必要があります。そうでない場合は、短い自己完結型の正しい例( )を投稿してください。 –
nemequ
いいえ、アルファチャンネルはありません。画像データは、RGB24画像に変換されたBayer RG8ピクセル情報を与えるカメラからのものであった。私があなたの提案に従って掲示した例は、Pixbufに変換されてファイルに保存された画像を正しくロードします。 FWIWレポはgithub.com/geoffjay/sentech-viewerです。 – geoffjay