image_merger.rb 985 B

123456789101112131415161718192021222324252627282930313233
  1. require 'rmagick'
  2. include Magick
  3. def append_image(image1_in, images_in, image_out)
  4. i = Magick::ImageList.new(image1_in, images_in)
  5. u.write(image_out) if i.append(true)
  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. i[index] = item.resize(image_width[index], image_height[index]) if image_width[index] && image_height[index]
  13. if xaxis[index] && yaxis[index]
  14. v.new_image(output_width, output_height) { self.background_color = 'transparent' }
  15. i[index] = v.composite(i[index], xaxis[index], yaxis[index], OverCompositeOp).write(image_out + index.to_s + '.png')
  16. else
  17. i[index].write(image_out + index.to_s + '.png')
  18. end
  19. arr << image_out + index.to_s + '.png'
  20. end
  21. i = Magick::ImageList.new(*arr)
  22. i = i.flatten_images
  23. i.write(image_out + '.png')
  24. end