使用 minimagick 将 JPEG 转为 TIFF

JPEG to TIFF using minimagick

我想根据一些标准将我的 jpeg 图像转换为 tiff 图像,满足所有因素但我不知道如何减小尺寸,目前,图像在转换后变为 1.2MB,我想将其减小到小于或等于 100kb,分辨率为 200 dpi。 原始 jpeg 图片大小为 250kb,大小为 456 X 679。

怎么做?

require 'mini_magick'

class FileConversionService

  def self.to_tiff
    input_path = "/images/1.jpg"
    image = MiniMagick::Image.open(input_path)
    k = image.format("tiff")
    k.write("/images/1_tiff")
    tiff_path = "/images/1_tiff"
    image_data = MiniMagick::Tool::Convert.new do |img|
        img << tiff_path
      img << '-resize' << "1600x734"
      img << '-colorspace' << "scRGB"
      img << '-density' << "700"
      img << '-background' << "white"
      img << '-verbose'
      img << tiff_path
    end
  end

end

FileConversionService.to_tiff

您可以添加 -compress 选项和 ZIPLZW 选项来为 TIFF 启用压缩。但对于大多数图像,TIFF 会比 JPEG 大。此外,您还指定了 resize 选项,可将图像放大至 979x734,使其成为更大的图像。

作为补充说明,您当前的代码转换了两次,一次通过

input_path = "/images/1.jpg"
image = MiniMagick::Image.open(input_path)
k = image.format("tiff")
k.write("/images/1_tiff")
tiff_path = "/images/1_tiff"

打开 jpg 并写入 tiff,第二次执行

image_data = MiniMagick::Tool::Convert.new do |img|
    img << tiff_path
  img << '-resize' << "1600x734"
  img << '-colorspace' << "scRGB"
  img << '-density' << "700"
  img << '-background' << "white"
  img << '-verbose'
  img << tiff_path
end

重新打开 tiff 文件,将其调整为定义的参数,然后再次输出到 tiff_path。这可以仅使用 convert:

一次性完成
input_path = "/images/1.jpg"
tiff_path = "/images/1.tiff"
MiniMagick::Tool::Convert.new do |img|
  img << input_path
  img << '-compress' << 'ZIP'      
  img << '-resize' << "1600x734"
  img << '-colorspace' << "scRGB"
  img << '-density' << "700"
  img << '-background' << "white"
  img << tiff_path
end