RMagick - 将文件转换为另一种格式而不保存到磁盘

Jos*_*ken 5 ruby rmagick image-conversion

我正在尝试将文件转换为特定格式,因此我可以将其删除.我知道保存到磁盘并指定扩展名以将其转换为另一种格式的技术,如下所示:

img.write("another_filename.jpg")
Run Code Online (Sandbox Code Playgroud)

我想在转换过程中不必触摸磁盘.

还有另外一种方法吗?

mu *_*ort 7

您可以在调用时指定格式to_blob.从精细手册:

to_blob img.to_blob [{optional arguments}] - > string

[...]
没有必需的参数,但是您可以通过Image::Info在与之关联的块中调用格式和深度属性以及适当的其他属性来指定图像格式(例如JPEG,PNG等)和深度.方法.

所以你可以这样说:

png_bytes = img.to_blob { |attrs| attrs.format = 'PNG' }
Run Code Online (Sandbox Code Playgroud)

是的,界面to_blob有点奇怪,但奇怪的界面只是使用ImageMagick的乐趣的一部分.

您也可以在调用之前使用该format=方法to_blob:

img.format = 'PNG'
png_bytes  = img.to_blob
Run Code Online (Sandbox Code Playgroud)