【问题标题】:How to load an image from url using Gtk3 with javascript?如何使用带有 javascript 的 Gtk3 从 url 加载图像?
【发布时间】:2022-01-09 19:02:38
【问题描述】:

如何使用带有 javascript 的 Gtk3 从 Internet 加载图像?

我尝试过使用

var image = new Image();
image.src(url);

但这给出了一个错误-> JS 错误:ReferenceError:图像未定义

有什么帮助吗?

谢谢。

//更新 由于上面提供的信息不足,我将在此处发布->

const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;

let app = new Gtk.Application({ application_id: 'org.gtk.ExampleApp' });


app.connect("activate", ()=>{

let win = new Gtk.Window({application : app});
let img = new Gtk.Image();

let url = 'https://spotlightreport.net/wp-content/uploads/2020/10/AC-DC-SHOT-IN-THE-DARK-PACK-SHOT-1920x1920.jpg';

let input_stream = Gio.MemoryInputStream.new_from_data(url, null);
let pixbuf = Gdk.GdkPixbuf.Pixbuf.new_from_stream(input_stream);

img.set_from_pixbuf(pixbuf);    

win.connect('destroy', ()=>{win.close();});
win.set_default_size(450,250);
win.show_all();
});
app.run([]);

我实际上想直接从 url 加载图像,即不下载它。我遇到了一篇使用 javascript 函数获取数据的帖子,但它没有用。我如何获取图像并显示它? 我实际上尝试过这样做 -> Post

【问题讨论】:

  • 也许image.src = url ?
  • 它说 Image() 没有定义,所以将 image.src(url) 更改为 image.src = url 不会改变任何东西。
  • 如果您在 javascript 控制台中输入 var image = new Image(),您会看到它有效。如果它在您的项目中不起作用,则问题必须在其他地方。您必须发布更多代码。

标签: javascript image networking gtk3


【解决方案1】:

这里的代码很少,但我可以想象它不起作用的几个原因:

  • 您没有导入 Gtk 模块
imports.gi.versions.Gtk = "3.0";
const { Gtk } = imports.gi;
  • 你应该在引用类时添加命名空间
const image = new Gtk.Image()  // Not `new Image()`
  • src() 不是Gtk.Image 中存在的方法,也没有在任何地方提及。您可以在 https://gjs-docs.gnome.org/gtk30-image/ 找到 Gtk.Image 的 JS 文档。正如您将看到的那样,没有从随机 URL 加载 Gtk.Image 的方法(除非它恰好是一个文件)。所以你首先必须下载 URL 的内容,用它制作一个 Gdk.Pixbuf,然后将它用于你的 Gtk.Image

无论如何:我认为您最好先关注GTK3 in GJS guide(还有a section on using Gtk.Image)并从一些较小的示例开始。一旦您学习了基础知识并开始对 GJS 感到满意,您就可以开始实施自定义的东西了。

【讨论】:

  • 我更新了这个问题,也许现在很清楚了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多