【发布时间】:2018-01-12 01:55:06
【问题描述】:
我有一个 DBus 服务,它为 Pixbuf 文件创建 Variant 类型,当保存在任一侧时会给出两个不同的文件,尽管数据相同。从服务器端保存的图像是正确的,客户端的图像显示顶部 1/3 正确,中间 1/3 水平移动 1/3 宽度且颜色不稳定,底部 1/3 移动宽度的 2/3,并且有不同的奇怪颜色。
服务器端的Variant就这样创建了
var image_var = new Variant ("(iiibi^ay)",
width,
height,
stride,
has_alpha,
bits_per_sample,
data);
并由客户端使用
解压Variant data_var = null;
image.get ("(iiibi@ay)",
&width,
&height,
&stride,
&has_alpha,
&bits_per_sample,
&data_var);
我在两面都打印有关 pixbuf 的内容,包括校验和。服务器端给
Width: 1024
Height: 768
Stride: 3072
Bits/Sample: 8
Has Alpha: false
Data Length: 786432
Data Checksum: e1facf66095e46d7ca3338b6438c1939
和客户
Width: 1024
Height: 768
Stride: 3072
Bits/Sample: 8
Has Alpha: false
Data Length: 786432
Data Checksum: e1facf66095e46d7ca3338b6438c1939
一切都是一样的,为两者保存图像的调用是
pixbuf.save (filename, "jpeg", "quality", "100", null);
这已经过测试,并且已经在三台不同的计算机上验证了不稳定。我将提供一个完整的例子,可能明天。我只是想先把它放在那里,以防以前有人遇到过。
【问题讨论】:
-
关键部分将是您如何在客户端加载接收到的数据与在服务器端加载原始图像。注意:由于您只是在总线上传输宽度、高度等信息,因此它们都是无关紧要的。