我有一个DBus服务,它为Pixbuf文件创建一个变体类型,当保存在任意一侧时,会给出两个不同的文件,尽管数据是相同的。从服务器端保存的图像是正确的,客户端的图像显示顶部1/3正确,中间1/3水平移动1/3宽度,颜色不稳定,底部1/3移动2/3宽度,颜色不稳定。
服务器端的变体是这样创建的
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
和客户
宽度:1024
高度:768
步幅:3072
位/样本:8
具有Alpha:false
数据长度:786432
数据校验和:e1facf66095e46d7ca3338b6438c1939
一切都是一样的,为两者保存图像的要求是
pixbuf.save (filename, "jpeg", "quality", "100", null);
这一点已经在三台不同的计算机上进行了测试,并得到了验证。我将提供一个完整的示例,很可能是明天。我只是想先把它放出来,不带它,以防有人以前碰到过。