【问题标题】:RMagick looses transparency when saving gifsRMagick 在保存 GIF 时失去透明度
【发布时间】:2014-08-05 10:51:03
【问题描述】:

我正在尝试使用 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?

编辑: 这是我的图像: http://i.imgur.com/uYL6vAR.gif

如果有用的话,我使用的 virsion 是: Rmagick 宝石 - 2.13.2 红宝石 - 2.1.2 ImageMagick 6.7.7-10 Ubuntu 13.10

编辑2: 我发现这实际上并没有发生在我的所有图像上,而是发生在那个确切的图像和其他这种小尺寸的图像上。处理小 GIF 可能有问题?

【问题讨论】:

    标签: ruby image-processing imagemagick rmagick


    【解决方案1】:

    我无法仅使用您发布的代码来重现此内容。您是否尝试过单独运行它?无论如何,您应该可以通过这种方式覆盖默认背景颜色:

    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')
    

    【讨论】:

    • 您的代码都没有改变任何东西。我更新了问题以添加我的图像。也许它是可重现的?图标的背景变为黑色。如何单独运行?
    • 我正在使用ImageMagick 6.8.8-9,也许尝试升级?
    • 您使用的是什么操作系统?您的版本似乎很新,因为它没有出现在 Ubuntu 13.10 存储库中。安装它很痛苦。 RMagick 是否需要如此新的版本才能正常工作?
    • 我正在运行 OS X 并通过 Homebrew 安装了 ImageMagick。尝试安装旧版本,但没有运气,对不起。通常我认为这应该很快被检测到,如果它是 imagemagick 中的一个错误。
    【解决方案2】:

    看来这确实是 ImageMagick 本身的一个错误。我不知道它是否已在 6.8 中修复,我将图像转换为 png 更容易。使用 png 它可以正常工作。该错误与编辑具有透明度的小型 16x16 gif 图像有关。

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 2017-09-08
      • 2015-01-21
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多