我试图使用RMagick批量处理图像。但是当我用它来代替这个代码时:
img = ImageList.new('in.gif').first
pixels = img.get_pixels(0,0,img.columns,img.rows)
img.store_pixels(0,0, img.columns, img.rows, pixels)
img.write('out.gif');
我希望我的图像保持不变,但它会失去它的transperency将其变成黑色。如何使用RMagick正确处理透明度的GIF?
编辑: 这是我的形象: http://i.imgur.com/uYL6vAR.gif
如果它有用,我使用的virsion是: Rmagick gem - 2.13.2 Ruby - 2.1.2 ImageMagick 6.7.7-10 Ubuntu 13.10
EDIT2: 我发现这对我的所有图像实际上都不会发生,而是对于那个确切的图像和其他这么小的图像。处理小GIF可能有问题吗?
答案 0 :(得分:0)
我无法仅使用您发布的代码重现此内容。你有没有尝试过孤立地运行它?无论如何,您应该能够以这种方式覆盖默认背景颜色:
img.background_color = 'transparent'
完整代码:
img = ImageList.new('in.gif').first
img.background_color = 'transparent'
pixels = img.get_pixels(0,0,img.columns,img.rows)
img.store_pixels(0,0, img.columns, img.rows, pixels)
img.write('out.gif')
你也可以尝试在ImageList
本身上覆盖它:
img_list = ImageList.new('in.gif')
img_list.background_color = 'transparent'
img = img_list.first
pixels = img.get_pixels(0,0,img.columns,img.rows)
img.store_pixels(0,0, img.columns, img.rows, pixels)
img.write('out.gif')
答案 1 :(得分:0)
看起来它确实是ImageMagick本身的一个错误。我不知道它是否在6.8中修复,我更容易将我的图像转换为png。用png它工作正常。该错误与编辑具有透明度的16x16 gif图像有关。