使用 python-fu 将 GIMP 图片导出为 png 未正确显示

问题描述

当我尝试在 GIMP 中使用 python-fu 保存图像时,该图片在我必须使用的另一个软件 (pivview) 中无法正确显示

当我手动导出图片时,颜色模式上方的所有框均未选中,16bpc RGB,压缩级别 5,IPTC 数据未选中,压缩下方的其他框均已选中,图片显示正确。
我必须使用的软件中的图片每4个像素左右都有全白列。使用windows图片图片显示正确。

图片为16bit uint灰度。

在 python-fu 控制台中,我尝试过:

savedir = 'C:/Users/slowmoetion/Desktop'
fname = 'picture'
point1 = [1555,775]
point2 = [300,550]
img = gimp.image_list()[0]
layer_one = gimp.Layer(img,'dodge',img.width,img.height,GREY_IMAGE)
layer_one.mode = DODGE_MODE
img.add_layer(layer_one,0)
pdb.gimp_drawable_edit_gradient_fill(layer_one,True,5,3,point1[0],point1[1],point2[0],point2[1])
new_img = pdb.gimp_image_duplicate(img)
layer = pdb.gimp_image_merge_visible_layers(new_img,CLIP_TO_IMAGE)
new_img=pdb.gimp_image_convert_rgb(new_img) #didn't help
pdb.file_png_save2(new_img,new_img.layers[0],savedir+'/'+fname+'_1.png',fname+'_1.png',False,False)

我也尝试将最后一个 False 切换到 True 和其他一些切换,但我没有想法...
使用 tiff 没有帮助,打开导出的文件时 pivview 崩溃。 也许这里有人知道我可以尝试什么?

非常感谢!

解决方法

当图片为 16bpc(或使用浮点格式更好)时,Gimp 默认将其保存为 16bpc PNG,这是一种相当新的变体(或至少不像 8bpc 那样受到广泛支持)。所以我的第一个实验是在 Gimp 中手动导出图像,并在 PNG 保存对话框中强制使用 16bpc 和 8bpc 格式,然后查看 16bpc 格式是否在您的查看应用程序中引起相同的行为,而 8bpc 显示正确。>

如果是这样,您必须导出 8bpc PNG。据我所知,无法明确设置 PNG 位数,但 file_png_save() 对图像精度很敏感,因此您可以通过在导出前更改图像精度(在图像本身或重复)。

仔细想想,也可能是灰度支持的问题,可以用类似的方法检查修复。