操作
Backport(バックポート) #3563
完了画像アップロード時に上限サイズを超えるファイルは自動的に縮小してアップロードする
開始日:
2014-02-21
期日:
進捗率:
100%
予定工数:
説明
画像アップロード時に上限サイズを超えるファイルは自動的に縮小してアップロードする。
OpenPNEおよびサーバー側のアップロードサイズ制限の上限をアップすることで回避することはできますが、
サーバーのディスク容量の切迫にも繋がるため、リサイズし保存する機能を追加する。
Mutsumi Imamura さんが10年以上前に更新
- コピー元 Enhancement(機能追加・改善) #3561: 画像アップロード時に上限サイズを超えるファイルは自動的に縮小してアップロードする を追加
Mutsumi Imamura さんが10年以上前に更新
- 対象バージョン を OpenPNE 3.6.14 から OpenPNE 3.6.x に変更
実装が間に合わないため3.6.14の対応項目からは見送ります。
Mutsumi Imamura さんが10年以上前に更新
- 担当者 を Akihiro KOBAYASHI にセット
- 対象バージョン を OpenPNE 3.6.x から OpenPNE 3.6.15 に変更
Akihiro KOBAYASHI さんが10年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが10年以上前に更新
設計として気になること
- 一般に画像の変換処理は複数適用することが多いためフィルタとして実装される事が多いが,この実装ではそういったことは考慮されていないため複数の変換を行う必要があったり縮小アルゴリズム自体を入れ替えたりといった変更を行う際に実装コストが極端に高くなる可能性があります.この辺りの話は画像認識技術などで前処理と呼ばれる話が参考になると思います.容量を下げる目的は達成できているため今の時点では問題無いと思います.
- File クラスに File としての特性以外のメソッドを多く持つようになっています.出力時の画像のリサイズなどは sfImageHandler が担っていますが,この中でも実装がうまく分離できていないように見えるためあまり参考にはならないと思いまが,今後の課題として画像処理については別クラスや(広義における)別トランザクションとして分離するほうが望ましいのではないかと思います.
- (設計による問題として) https://redmine.openpne.jp/issues/3560#note-10 でも書きましたが同時に複数の実装を追加する際にそれぞれが独立した機能であるにもかかわらずマージが難しくなるような実装が容易に行えてしまいます.程度や優先度にもよりますが,マージ時の作業が行い易いように処理の塊はまるごと一つにして既存部分は数行追加削除のみといったような差分を心がけると喜ばれると思います.(もちろんこれは一般的な考えを述べているわけではありません)
- Doctrine では save() メソッドはいろんなところで暗黙的に使われている可能性があるため実装によっては意図しない呼び出しが発生する可能性があります.同じ save() の複数回呼び出しでもテキストについては非可逆な処理が行われていないため問題無いですが非可逆な圧縮を行う画像の場合 save() を呼び出すたびに画像劣化を起こす可能性があります.軽くながめた感じでは問題無いと思いますが注意する必要があるかもしれません.
- コミットメッセージが fixed となっています. wiki にも書かれていますが redmine のツールと連携をするために fixes のほうが正しいです.
仕様として気になることメッセージは関連するチケットの ID を含んでください。 ID は 「refs」や「fixes」というキーワードを伴って指定してください。これを守るための有用なフックスクリプトを用意してあります: http://gist.github.com/202866
- 画像の容量を下げるアプローチとしてはピクセル数を下げるという方法の他に,圧縮アルゴリズムを変更するといったアプローチもあります.jpeg などはパラメータとして quality で画質を下げ,ピクセル数を下げずに保存時の容量を下げるようにしてといったことも可能かもしれません.容量を下げる目的は達成できているため今の時点では問題無いと思います.
- 例えば デジタル一眼などの高画質の画像をアップロードする際に極端に画像劣化を起こす可能性がありますがそのあたりの調整がしにくいようなパラメータのような気がします.サーバ側での画像縮小アルゴリズムやブラウザ側での画像拡大アルゴリズムなどによってその辺り変わるような気がするので,この実装でどのようになるのか挙動として把握しておく必要があるかなと思います.カスタマイズとしてこの辺りをよく変更する可能性が多分にあると思いますが,前述の設計で気になることで書いたように変更コストが高くなる可能性があります.容量を下げる目的は達成できているため今の時点では問題無いと思います.
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
匿名ユーザー さんが10年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
更新履歴 0f9a94d52d6e185bfa6e8e1080c73355956ae7aa で適用されました。
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Akihiro KOBAYASHI さんが約10年前に更新
- 関連している Enhancement(機能追加・改善) #3219: 投稿画像を自動的に圧縮する機能を実装する を追加
操作