1 class ResourcePicture < ActiveRecord::Base
4 has_many :panel_pictures
5 belongs_to :original_picture
7 before_destroy :destroy_with_file
10 PictureIO.resource_picture_io.delete self.filename
11 PictureIO.resource_picture_io.class.subdirs.each do |d|
13 PictureIO.resource_picture_io.delete(self.filename, d) if PictureIO.resource_picture_io.exist?(self.filename, d)
17 def self.resize(data, dw, dh)
18 Magick::Image.from_blob(data).shift.resize(dw, dh)
21 #サイズの調整(limw,limhに必ず収まるように合わせる)
22 def self.fix_size_both(limw, limh, w, h)
48 "#{self.id}.#{self.dext}"
64 rimg.flip.flop.to_blob
68 '/resource_pictures/' + (subdir.to_s.empty? ? '' : subdir.to_s + '/' ) + filename
72 tw, th = ResourcePicture.fix_size_both(80, 80, rimg.columns, rimg.rows)
73 ResourcePicture.resize(rimg.to_blob, tw, th).to_blob
76 def self.store(img, original_picture)
78 resource_picture = ResourcePicture.new(
79 width: original_picture.width, height: original_picture.height,
80 ext: original_picture.ext, filesize: original_picture.filesize,
81 original_picture_id: original_picture.id, artist_id: original_picture.artist_id,
82 license_id: original_picture.license_id
84 res = if resource_picture.save
85 if resource_picture.store(img)
100 PictureIO.resource_picture_io.put bindata, self.filename
101 PictureIO.resource_picture_io.class.subdirs.each do |d|
103 PictureIO.resource_picture_io.put(self.__send__(d, img), self.filename, d)
112 def restore(subdir = nil)
113 PictureIO.resource_picture_io.get self.filename, subdir