【问题标题】:Cut one image into smaller pieces将一张图像切成小块
【发布时间】:2011-12-16 13:58:43
【问题描述】:

我需要编写一些 ruby​​ 脚本来帮助我处理大图像文件。我知道 imagemagick 和 rmagick 库(ruby)的基础知识,但直到现在我都在做一般简单的事情(缩略图,添加水印等)现在我想将具有示例分辨率 3000/1000px 的文件剪切成十个较小的图像(3000/100 px )。可能吗?我不知道该使用哪种方法。

【问题讨论】:

    标签: ruby image-processing imagemagick rmagick


    【解决方案1】:

    cropping 输入图像对每个输出图像执行一次怎么样:

    output_images =
      (0...10).collect { |i|
        input_image.crop(0, i*100, 3000, 100, true)
      }
    

    更一般地说(但仍假设 Y 分辨率可被切片数整除):

    def slice_image_horizontally(image, num_slices)
      slice_height = image.y_resolution / num_slices
      (0...num_slices).collect { |i|
        image.crop(
          0, i * slice_height,
          image.x_resolution, slice_height,
          true # reset image offset
        )
      }
    end
    

    http://www.imagemagick.org/RMagick/doc/image1.html#crop

    【讨论】:

      【解决方案2】:
      10.times do |slice|
        system "convert example.jpg -crop x100+0+#{slice * 100} +repage example#{slice}.jpg"
      end
      

      编辑:是的,我猜 RMagick 更酷 :)

      【讨论】:

      • 是的,我考虑过建议 convert,但 Arti 明确表示要使用 Ruby 和 RMagick。而+repage 是一个不错的选择;我添加了与我的答案等效的内容。
      猜你喜欢
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2022-06-16
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      相关资源
      最近更新 更多