Bug(バグ) #3560
完了スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある
0%
説明
Overview (現象)¶
スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある
再現バージョン¶
- OpenPNE3.8.10
- OpenPNE3.6.13
再現手順¶
(再現方法をここに記述)
Causes (原因)¶
スマートフォン等で撮影した画像にはexif情報が埋め込まれます。
exif情報には、撮影したカメラの機種や撮影時の条件、撮影方向等が載っています。
iPhone等のスマートフォンでは、画像を表示する際にexif情報を読み取ることで最適な画像の向きで表示できるようになっています。
しかしOpenPNEでは画像を表示する際にexif情報を読みとらずにそのまま表示されたことから「縦と横が反転して、横向きに画像がアップされる」という現象が発生します。
Way to fix (修正内容)¶
修正内容を記入
Mutsumi Imamura さんが10年以上前に更新
- 説明 を更新 (差分)
- 3.6 で発生するか を Unknown (未調査) から Yes (はい) に変更
- 3.8 で発生するか を Unknown (未調査) から Yes (はい) に変更
Mutsumi Imamura さんが10年以上前に更新
- コピー先 Backport(バックポート) #3562: スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある を追加
Mutsumi Imamura さんが10年以上前に更新
- コピー先 Backport(バックポート) #3564: スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある を追加
Yuya Watanabe さんが10年以上前に更新
対象 pull request
able to read exif data and orient the direction to repair of the uploade... by AkihiroKOBAYASHI · Pull Request #103 · openpne/OpenPNE3
Yuya Watanabe さんが10年以上前に更新
修正コミットは f20e9a3 だと思いますがマージやコンフリクトの解消時に削除されているようです.最終的なマージコンフリクトの解消は master マージ時に行いますので本チケットの修正に則した内容のコミットのみのプルリクエストでお願いします.
b202426 able to resize the uploaded image when its size is larger than assigned. 28047ed start 4ad8194 able to resize the uploaded image when its size is larger than assigned. dc57650 start d897a1d Merge branch 'master' of https://github.com/AkihiroKOBAYASHI/OpenPNE3 30fb274 Merge branch 'master' of https://github.com/AkihiroKOBAYASHI/OpenPNE3 29cecef able to compress the uploaded image when its size is larger than assigned size 3b8dc51 able to resize the uploaded image when the size of it is larger than that of assigned f20e9a3 able to read exif data and orient the direction to repair of the uploaded image
Yuya Watanabe さんが10年以上前に更新
対象 pull request
able to read exif data and orient the direction to repair of the uploaded image by AkihiroKOBAYASHI · Pull Request #105 · openpne/OpenPNE3
https://github.com/openpne/OpenPNE3/pull/105
Yuya Watanabe さんが10年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
フィードバック¶
すべて save() メソッドの中に記述されていますが,この辺りは「Orientation にしたがって画像を回転する」という明確な目的の一連の流れが存在するため,名前付けしてメソッドとして抽出してもらったほうがよいです.
メソッド抽出の具体的なメリットは リファクタリングという書籍の 「Extract Method(メソッドの抽出)」の項目が参考になります.
本チケットにおけるメソッド抽出の利点としては #3561 の修正と同時にマージする際に save() 内でのコンフリクトの解消時に ロジック記述部分を気にしたマージを行う必要が生じるものを,メソッド抽出後は save() 内ではメソッドの追加のみで対応できるというようなことがあります.
実際にマージを行う場合では画像変更処理はまとめておいたほうがよいと思われるためメソッドに抽出した処理については共通化する可能性はありますが,処理単位でまとまっているほうが共通化なども行いやすくなります.
Mutsumi Imamura さんが10年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
https://github.com/openpne/OpenPNE3/pull/107 でプルリクエストが来ています
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
だいぶよくなったと思います.以下簡単にフィードバック.
ちなみに github 側の pull request についてですが,今の段階ではコミットを一つにまとめる必要はないです.
この段階で一つにまとめてしまうとフィードバックの修正内容が最初のコミットからどのように反映されているか,あるいはそもそも反映されているかどうかが追いにくいためです.あと,念のため先んじて書いておきますが「fixed for feedback」のような修正内容がわからないコミットメッセージは後々コードを git log や git blame などで追う際に重大な情報量不足となるため控えてもらうと助かります.
フィードバック1¶
アクセス修飾子がすべて public になっていますが外側で使うタイミングがなさそうなメソッドのため private または protected のほうが良いです.ここの場合, File オブジェクトは部分集合として画像を持ち,その部分集合の要素である場合に必要なメソッドであるため外側のクラスからの呼び出しで用いられることは望ましくなく private で良いと思います. public や protected にするならば画像または画像変換ロジックを扱うクラスで行ったほうがよさそうです.
一般的にプロパティやメソッドのスコープは必要でない限り小さいほうが良いというスタンスが多いと思います.具体的な例は検索してもらうとよいと思います.
フィードバック2¶
createOrientedImage() 内の case 文で 3, 6, 8 などマジックナンバーが用いられています.今の時点ではコードを見ればまあわかりますが,より早く処理の概要を捉える目的やコードが肥大化した場合に処理が追いにくくなること防ぐ目的のために回転方向をコメントで追記してもらうと良いです.またコーディング規約には記述されていませんがコメントで単語や文章を用いる際には英語でお願いします.
フィードバック3¶
コーディング規約について
http://www.openpne.jp/coding-standards-ja/#id28
クラスと同様、波括弧は関数名の次に書かなければなりません。関数名と引数定義用の開始括弧の間にはスペースを入れてはいけません。
http://www.openpne.jp/coding-standards-ja/#id34
変数と値を比較する際は最初に値を置き、場合によっては型チェックもおこなってください:
if (1 === $var)
Yuya Watanabe さんが10年以上前に更新
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
- 進捗率 を 50 から 0 に変更
Yuya Watanabe さんが10年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
対応有難うございました.大丈夫と思うためマージします.
Yuya Watanabe さんが10年以上前に更新
ちなみにコミットメッセージが 二つのコミットで全く同じとなっていますが,まあ大丈夫とします.
修正内容としては note-12 の 3 つとなるためコミットもそれぞれの目的に合わせてコミットメッセージを変更し,わかりやすいコミットであるほうが望ましいと思います.ここではまあ大丈夫とします.
Akihiro KOBAYASHI さんが10年以上前に更新
@nabe 了解です。以後気をつけます。ただ、#3561も二つのコミットで全く同じとなっていると思うので・・・・・・そこはお許しください
Yuya Watanabe さんが10年以上前に更新
5d3ca7b953f42e04462aefeede9862233904410a で master にマージしました.
Yuya Watanabe さんが10年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
更新履歴 5d3ca7b953f42e04462aefeede9862233904410a で適用されました。
Mutsumi Imamura さんが10年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
レビュー待ちに戻ってしまっているのでステータス変更します。