JRubyからImageIOで画像を触ってみる
JRubyならJavaのAPIが扱えるのでImageIOを使うと簡単に読み書きできると思います。
JPGからPNGに変換する
require 'java' import 'javax.imageio.ImageIO' import 'java.io.FileInputStream' import 'java.io.FileOutputStream' def read_image name file = FileInputStream.new name @img = ImageIO::read(file) end def write_image name file = FileOutputStream.new name ext = File.extname(name).delete('.') ImageIO::write(@img, ext, file) end begin read_image 'top_image.jpg' write_image 'rename.png' rescue => e puts e.message end
ここで、@imgは、BufferedImageクラスとなるようです。
なので、
@img.width
@img.height
なんかが使えたりします。
サポートする画像フォーマットは、以下で取得できます。
p ImageIO::reader_format_names.to_a p ImageIO::writer_format_names.to_a #["jpg", "BMP", "bmp", "JPG", "jpeg", "wbmp", "png", "PNG", "JPEG", "WBMP", "GIF", "gif"] #["jpg", "BMP", "bmp", "JPG", "jpeg", "wbmp", "png", "PNG", "JPEG", "WBMP", "GIF", "gif"]