如何使用MiniMagick :: Tool :: Convert在内存中创建图像

时间:2019-01-24 18:48:36

标签: ruby minimagick

我有一个功能,可以打开图像,调整图像大小,然后设置要包含在其调色板中的最大颜色数。然后将此修改后的图像用于内部处理。我的首选是避免将映像保存到磁盘,然后立即将其打开。

是否可以使用MiniMagick :: Tool ::: Convert并捕获内存中的输出?

def create_image_for_processing(image_path, resize, colors)
    MiniMagick::Tool::Convert.new do |convert|
        convert << image_path
        convert << '-resize' << resize
        convert << '-colors' << colors
        convert << 'temp.png'
    end
    MiniMagick::Image.open('temp.png')
end

2 个答案:

答案 0 :(得分:0)

这有效:)

image_data =
    MiniMagick::Tool::Convert.new do |convert|
      convert << image_path
      convert << '-resize' << resize
      convert << '-colors' << colors
      convert.stdout
    end
MiniMagick::Image.read(image_data)

答案 1 :(得分:0)

查理·普雷扎诺(Charlie Prezzano)的回答似乎应该可以正常使用,但对我而言不起作用,因此我将在此处发布替代方法。这是对我有用的东西:

image_data =
    MiniMagick::Tool::Convert.new do |convert|
      convert << image_path
      convert << '-resize' << resize
      convert << '-colors' << colors
      convert << 'png:-'
    end
MiniMagick::Image.read(image_data)