素材 @ ResourcePictureSpec

カラム

name和名typedefaultnulllimitnote
ext画像フォーマットstring FALSE4画像フォーマット
widthinteger FALSE 幅 ピクセル数
height高さinteger FALSE 高さ ピクセル数
filesizeファイルサイズinteger FALSE 画像のファイルサイズ
md5MD5string FALSE32画像のmd5値
artist_id絵師integer FALSE 絵師id
original_picture_id原画integer FALSE 原画id
license_group_idライセンスグループinteger FALSE 付与ライセンスグループid
license_idライセンスinteger FALSE 付与ライセンスid
system_picture_id画像integer FALSE クレジットアイコン
license_group_classnameライセンスクラス名string FALSE50ライセンスクラス名
credit_picture_settingsクレジット拡張データstring クレジット表示拡張データ
license_group_settings拡張データstring 拡張データ
license_settings拡張データstring 拡張データ
picture_id実素材integer FALSE 実素材(Headの)id
created_at作成datetime
updated_at更新datetime
  • 素材とは、作家が適切な画像を探すためのサンプル画像のこと。
  • 多数の画像を一覧した中から選ぶため、画像は小さめの方が良い。
  • 一覧表示用に原画を縮小した画像、つまりサムネイルのこと。
    • PettanImagerにより原画を縮小して作成する。
    • サイズは64x64pxを最大とし、幅高さのどちらか大きい方を最大値64pxとして縦横比を維持して縮小する。
    • 原画がサムネイルサイズより小さい場合は、一切加工しない。外観を整えるセンタリングはクライアントで対応する。
    • 原画のライセンスがサイズ変更禁止のときはサムネイル化されない。
      • 原寸画像が返ってくることを考慮して必ずサムネイルサイズを指定して表示する。
    • サムネイルでは不足のときはfullディレクトリに原寸画像が保存されている。
  • gifフォーマット変換
    • ie6では透過pngを透過できないため、png画像はgifに変換する。
    • 反転画像についても、すべて変換する。
    • ただし、ライセンスが変換を禁止している場合は、変換してはならない。

作成手順

  • 原画にライセンスが与えられるときに作成される。
  • レコードの作成と画像の保存は一つのトランザクションで行う。画像の保存にはPictureIoを使う。
  • ライセンス付与すると、実素材でRevision管理しつつ、素材を作成する。
    • 実素材だけで最新Revisionを探すのは面倒そうなのでpicture_idを保持している。
    • 実素材を作成してからでないと作成できない。
    • 実素材の作成は素材を渡す必要があるので、保存前の素材を渡してやり、作成された実素材のidを素材に補充して完成する。
  • 同一トランザクションで更新する。

検証

カラム別

original_picture_id

  • nullでないこと。
  • 数値であること
  • 存在する原画であること。

ext

  • nullでないこと。
  • 4文字以内であること。
  • png、gif、jpegのいずれかであること。

width

  • nullでないこと。
  • 数値であること
  • 正の整数であること。

height

  • nullでないこと。
  • 数値であること
  • 正の整数であること。

filesize

  • nullでないこと。
  • 数値であること
  • 2MB以内であること。

md5

  • nullでないこと。
  • 32文字であること。

artist_id

  • nullでないこと。
  • 数値であること
  • サインイン中の絵師idであること

license_id

  • nullでないこと。
  • 数値であること
  • 存在するライセンスであること。

artist_name

  • nullでないこと。

classname

  • nullでないこと。
  • 50文字以内であること。

picture_id

  • nullでないこと。
  • 数値であること
  • 存在する実素材であること。

全体

所属モデル

機能

デフォルト値補充

supply_default()

パラメータ

解説

  • 補充すべきデータはない

上書き補充

overwrite(op)

パラメータ

  • op:原画データ

解説

  • 対象原画の諸データを補充する。
  • width, height, ext, filesize, md5, original_picture_id, artist_id

所持判定

own?(roles)

パラメータ

  • roles:ロールリスト

戻り

真偽

解説

自身の持ち主がロールリスト内に含まれるかどうかをTrue/Falseで返す

  • 自身にロールリストからの絵師取得を依頼して、ロール内絵師を取得する。
    • ロールリストを渡す。
  • ロール内絵師が取得できないとき、Falseを返す。
  • ロール内絵師のidが自身の絵師idと一致するならTrue、しないならFalseを返す。

閲覧許可

visible?(roles)

パラメータ

  • roles:ロールリスト

戻り

真偽

解説

検査対象が素材を閲覧できるかどうかを判定する

  • オープンモードのとき、自身にゲスト用ロールチェックを問い合わせ、その結果が偽であれば、falseを返す。
    • ロールリストを渡す。
  • クローズドモードとき、自身に素材読者用ロールチェックを問い合わせ、その結果が偽であれば、falseを返す。
    • ロールリストを渡す。
  • それ以外なら許可を返す。

ファイル名

filename

解説

画像ファイル名を返す。id+拡張子のフォーマットとなる。PictureIoとは、このファイル名でやり取りする。

MimeType

mime_type

解説

ブラウザに画像バイナリデータを送信する時のMimeTypeを返す。

ファイルのurl

url

解説

Imgタグでsrcに使う、この原画のUrlを返す。

画像タグオプション

opt_img_tag

解説

一覧でサムネイル画像を表示するときに、Imgタグで使うオプションを返す。戻り値はHashでsrcと画像の幅高さを含む。原画は本人だけしか見えないので、好きにサムネイル化できる。

1ページの件数

self.default_page_size

パラメータ

解説

一覧取得時に返す件数のデフォルト値

  • 25を返す。

1ページの最大件数

self.max_page_size

パラメータ

解説

ユーザは一覧取得時に返す件数を指定できるが、システムは上限値を設定できる

  • 100を返す。

ページ位置補正

self.page prm = nil

パラメータ

  • prm:ページ位置

解説

一覧取得時に何ページ目を返すかの指定値を補正

  • パラメータを数値として認識する
  • 省略時は1
  • 0以下のときは1

ページ数補正

self.page_size prm = self.default_page_size

パラメータ

  • prm:ページ数

解説

一覧で取得する件数

  • パラメータを数値として認識する
  • 省略時は1
  • 0以下のときは1
  • 1ページの最大件数を上回っているなら、1ページの件数を返す。

一覧取得

list(page = 1, page_size = self.default_page_size)

パラメータ

  • page:何ページ目か
  • page_size:1ページに収まる件数

解説

  • 素材を更新日時順に取得する。
  • 関連データとして一覧取得オプションで定義されたモデルを含む。
  • ページ処理に対応し、毎ページn件の条件でmページ目から取得することができる。
    • ただし、page_sizeが0のときは全件取得してページ制御しない。

一覧取得オプション

下記の関連テーブルを含む

  • license
  • artist
  • picture

json一覧出力オプション

下記の関連テーブルのカラムを含む

  • license (*)
  • artist (*)
  • picture (*)

マイリスト取得

mylist(artist, page = 1, page_size = self.default_page_size)

パラメータ

  • artist:絵師データ
  • page:何ページ目か
  • page_size:1ページに収まる件数

解説

  • 素材を更新日時順に取得する。
  • パラメータで与えられた絵師の素材に限る
  • 関連データとして一覧取得オプションで定義されたモデルを含む。
  • ページ処理に対応し、毎ページn件の条件でmページ目から取得することができる。
    • ただし、page_sizeが0のときは全件取得してページ制御しない。

単体取得

show(id, au)

パラメータ

  • id:素材id
  • au:作家データ

解説

  • idの素材を取得する。
  • 関連データとして単体取得オプションで定義されたモデルを含む。
  • 素材に閲覧許可を問い合わせ、不許可なら、例外403 ActiveRecord::Forbiddenを発生させる。
  • 存在しない素材のidを要求された場合は、例外404 ActiveRecord::RecordNotFoundを発生させる。

単体取得オプション

下記の関連テーブルを含む

  • license
  • artist
  • picture

json単体出力オプション

下記の関連テーブルのカラムを含む

  • license (*)
  • artist (*)
  • picture (*)

フォーマット変換対象判定

to_gif?

パラメータ

なし

解説

  • 画像フォーマットがpngかつライセンスの変換禁止フラグが無効のときTrue

新規実素材の取得

new_picture(imager)

パラメータ

  • imager:画像ライブラリ

解説

  • 実素材モデルの新規オブジェクトを生成する。
  • 実素材モデルにデフォルト値補充を依頼する。
  • 実素材モデルに上書き補充を依頼する。
    • 自身を渡す。自身のの情報は原画やパラメータからコピー済であること。
  • 実素材モデルに依頼して実素材を保存する。
    • 画像ライブラリを渡す。
  • 保存された実素材を返す。
  • ただし、実素材の保存に失敗したなら、自身の全体エラーメッセージにその旨をセットしてFalseを返す。

作成・更新

store(imager)

パラメータ

  • imager:画像ライブラリ

解説

原画id、付与ライセンスid、著作者名、クレジット表示拡張データ、拡張データは設定済みであること。

  • 自身の原画の停止日時をクリアする。
  • 自身の原画の公開日時に現在時刻をセットして、保存する。
  • 自身に新規実素材の取得を依頼する。
    • 画像ライブラリを渡す。
  • 実素材idから最新画像idを取得してセットする。
  • 自身を保存する。
  • gif付き画像ファイルの作成・更新機能で画像を保存する。
    • 画像ライブラリを渡す。
  • 全ての保存が正しく終わればTrueを返す。
  • 例外ケース
    • 失敗していれば処理を中断してロールバックしてFalseを返す
    • 原画の保存に失敗した。
    • 新規実素材の取得に失敗した。
    • 自身の保存に失敗した。
    • gif付き画像ファイルの作成・更新に失敗した。

gif付き画像ファイルの作成・更新

store_picture_with_gif(imager)

パラメータ

  • imager:画像ライブラリ

解説

  • 画像ファイルの作成・更新機能で画像を保存する。
    • 画像ライブラリと正規ファイル名を渡す。
  • 自身にフォーマット変換対象かを問い合わせ、必要なら保存する。
    • 画像ライブラリにGifフォーマット変換を依頼し、gif画像をロードした画像ライブラリを取得する。
    • 画像ファイルの作成・更新機能で画像を保存する。
      • gif画像ライブラリとgifファイル名を渡す。
  • 全ての保存が正しく終わればTrueを返す。
  • 例外ケース
    • 失敗していれば処理を中断して自身の全体エラーメッセージにその旨をセットしてFalseを返す
    • 画像の保存に失敗した。
    • gif変換に失敗した。
    • gif画像の保存に失敗した。

画像ファイルの作成・更新

store_picture(imager, fn)

パラメータ

  • imager:画像ライブラリ
  • fn:保存ファイル名

解説

PictureIo経由で画像を保存するための機能。ファイル名に自身のidを使うので事前に自身の保存が必要。

  • サムネイルライブラリを用意する。
    • 自身にサムネイル化許可を問い合わせる。
    • 許可であれば画像ライブラリにサムネイル化を依頼して、結果をサムネイルライブラリとする。
    • 禁止であれば、画像ライブラリをサムネイルライブラリとする。(原寸画像をサムネイルに保存する)
  • 保管庫にサムネイルライブラリの画像データ保存を依頼する。
    • パラメータとして、サムネイルライブラリの画像データと保存ファイル名を渡す。
  • 保管庫に画像ライブラリの画像データ保存を依頼する。
    • パラメータとして、画像ライブラリの画像データとファイル名とサブディレクトリを渡す。
    • サブディレクトリは、full
  • 全ての画像の保存が正しく終わればTrueを返す。
  • 例外ケース
    • 失敗していれば処理を中断して自身の全体エラーメッセージにその旨をセットしてFalseを返す
    • サムネイル化に失敗した。
    • サムネイル画像の保存に失敗した。
    • 画像の保存に失敗した。

公開停止

unpublish

パラメータ

戻り

真偽

解説

  • トランザクションを用意する。
  • 自身の原画の公開日時をクリアする。
  • 自身の原画の停止日時に現在時刻をセットして、保存する。
  • 自身に削除を依頼する。
  • 保管庫にサムネイルの画像データ削除を依頼する。
  • 保管庫にフルサイズの画像データ削除を依頼する。
  • 全ての削除が正しく終わればTrueを返す。
  • 例外ケース
    • 失敗したとき、ロールバックしてFalseを返す
    • 原画の保存に失敗した。
    • 自身の削除に失敗した。
    • サムネイル画像の削除に失敗した。
    • フルサイズ画像の削除に失敗した。

エクスポート用画像データ

picture_data

パラメータ

戻り

画像データ

解説

復元した画像ファイルをBase64でエンコして返す。

  • 自身に画像ファイルの復元を依頼して、Base64でエンコして返す。
    • サブディレクトリにfullを渡す。