lib/dnn/lib/image_io.rb in ruby-dnn-0.3.2 vs lib/dnn/lib/image_io.rb in ruby-dnn-0.4.0

- old
+ new

@@ -1,27 +1,31 @@ require "numo/narray" -require "dnn/ext/image_io/image_io_ext" +require "dnn/ext/rb_stb_image/rb_stb_image" module DNN module ImageIO - private_class_method :_read - private_class_method :_write_bmp - private_class_method :_write_png - private_class_method :_write_jpg - def self.read(file_name) raise ImageIO::ReadError.new("#{file_name} is not found.") unless File.exist?(file_name) - _read(file_name) + img, = Stb.stbi_load(file_name, 3) + img end - def self.write(file_name, nary, quality: 100) + def self.write(file_name, img, quality: 100) + img = img.clone + if img.shape.length == 2 + img = Numo::UInt8[img, img, img].transpose(1, 2, 0).clone + elsif img.shape[2] == 1 + img = img.shape(img.shape[0], img.shape[1]) + img = Numo::UInt8[img, img, img].transpose(1, 2, 0).clone + end case file_name when /\.png$/ - _write_png(file_name, nary) + stride_in_bytes = img.shape[0] * img.shape[2] + Stb.stbi_write_png(file_name, *img.shape, img, stride_in_bytes) when /\.bmp$/ - _write_bmp(file_name, nary) + Stb.stbi_write_bmp(file_name, *img.shape, img) when /\.jpg$/ - _write_jpg(file_name, nary, quality) + Stb.stbi_write_jpg(file_name, *img.shape, img, quality) end rescue => ex raise ImageIO::WriteError.new(ex.message) end end