【问题标题】:GdkPixbuf can be created with `new_from_data` and `new_from_stream`. Why doesn't the latter require the resolution?GdkPixbuf 可以使用 `new_from_data` 和 `new_from_stream` 创建。为什么后者不需要分辨率?
【发布时间】:2016-11-17 15:48:09
【问题描述】:

我正在尝试了解 Pixbuf 背后的基础知识及其工厂方法 new_from_datanew_from_stream

new_from_data 需要一串包含图像数据的字节,以及其他信息,例如每个样本的位数、图像的高度和高度。

我不明白为什么new_from_stream 不需要这些额外的图像信息。那么,Pixbuf 怎么知道如何渲染图像,new_from_stream 除了Gio.InputStream 没有提供任何额外的信息吗?

【问题讨论】:

    标签: gtk pygtk gtk3 gdkpixbuf pixbuf


    【解决方案1】:

    new_from_stream() 期望获得支持的图像文件流,相当于new_from_file()。所有图像格式都包含高度和宽度等元数据。

    另一方面,new_from_data() 需要一个像素缓冲区,它本质上只是一个没有任何元数据的像素数组。

    【讨论】:

    • 感谢您的回答。我想知道:是否有可能(并且有效)保留一个 pixbuf 并更改数据(类似于new_from_data 提供的数据)?这是因为我担心new_from_stream 需要解析图像格式的速度较慢,因此可能不适合显示动态生成的视频。
    • 如果您需要以某种方式经常触摸图片(就像每个绘图周期一样),那么修改数据肯定比每次都创建一个新的 pixbuf 更好很多:内存分配需要一个而...也许get_pixels()对你有用。
    • 在 python 中不是不可变的“字节”对象(get_pixels() 返回的对象)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2023-02-21
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多