image_merger.rb 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. require 'rmagick'
  2. include Magick
  3. def append_image(image1_in, image2_in, image_out)
  4. i = Magick::ImageList.new(image1_in,image2_in)
  5. i.append(true).write(image_out)
  6. end
  7. def merge_image(image_array, image_out, output_width, output_height, xaxis, yaxis, image_width, image_height)
  8. i = Magick::ImageList.new(*image_array)
  9. v = Magick::ImageList.new
  10. arr = []
  11. i.each.with_index do |item, index|
  12. if image_width[index] && image_height[index]
  13. i[index] = item.resize(image_width[index], image_height[index])
  14. end
  15. if xaxis[index] && yaxis[index]
  16. v.new_image(output_width, output_height) { self.background_color = "transparent" }
  17. i[index] = v.composite(i[index], xaxis[index], yaxis[index], OverCompositeOp).write(image_out + index.to_s + ".png")
  18. else
  19. i[index].write(image_out + index.to_s + ".png");
  20. end
  21. arr << image_out + index.to_s + ".png"
  22. end
  23. i = Magick::ImageList.new(*arr)
  24. i = i.flatten_images();
  25. i.write(image_out + ".png")
  26. end