问题描述
我想将我的 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
选项与 ZIP
或 LZW
选项一起添加以启用对 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