Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby RMagick在保存GIF时会失去透明度_Ruby_Image Processing_Imagemagick_Rmagick - Fatal编程技术网

Ruby RMagick在保存GIF时会失去透明度

Ruby RMagick在保存GIF时会失去透明度,ruby,image-processing,imagemagick,rmagick,Ruby,Image Processing,Imagemagick,Rmagick,我正在尝试使用RMagick编写一个用于批处理图像的Ruby脚本。但当我使用此代码作为示例时: 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'); 我希望我的图像保持不变,但它失去了透明度,变成了黑色。如何使用RMagick正确

我正在尝试使用RMagick编写一个用于批处理图像的Ruby脚本。但当我使用此代码作为示例时:

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');
我希望我的图像保持不变,但它失去了透明度,变成了黑色。如何使用RMagick正确处理具有透明度的GIF

编辑: 这是我的照片:

如果有用,我使用的病毒是: Rmagick宝石-2.13.2 Ruby-2.1.2 ImageMagick 6.7.7-10 Ubuntu 13.10

编辑2:
我发现,这实际上并不是发生在我所有的图片上,而是发生在那张图片和其他小尺寸的图片上。可能是处理小型GIF时出错了?

我无法仅用您发布的代码重现这一点。你试过独立运行吗?无论如何,您应该能够通过以下方式覆盖默认背景色:

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本身上覆盖它:


看起来这确实是ImageMagick本身的一个bug。我不知道它是否在6.8中得到了修复,对我来说,将图像转换成png更容易。使用png,效果很好。该错误与编辑小的(如16x16 gif)透明图像有关。

您的代码都不会改变任何内容。我更新了问题以添加我的图像。也许它可以复制?图标的背景变为黑色。如何独立运行?我正在使用ImageMagick 6.8.8-9,可能正在尝试升级?您使用的是什么操作系统?你的版本看起来很新,因为它没有出现在Ubuntu13.10Repo中。安装它很痛苦。RMagick是否需要如此新的版本才能正常工作?我正在运行OS X并通过自制安装ImageMagick。尝试安装旧版本,但没有成功,抱歉。通常情况下,我认为这应该很快被检测到,如果它是imagemagick中的一个bug的话。
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')