プロジェクト

全般

プロフィール

Bug(バグ) #3560

スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある

Mutsumi Imamura約10年前に追加. 約7年前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2014-02-21
期日:
進捗率:

0%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

Overview (現象)

スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある

再現バージョン

  • OpenPNE3.8.10
  • OpenPNE3.6.13

再現手順

(再現方法をここに記述)

Causes (原因)

スマートフォン等で撮影した画像にはexif情報が埋め込まれます。
exif情報には、撮影したカメラの機種や撮影時の条件、撮影方向等が載っています。
iPhone等のスマートフォンでは、画像を表示する際にexif情報を読み取ることで最適な画像の向きで表示できるようになっています。
しかしOpenPNEでは画像を表示する際にexif情報を読みとらずにそのまま表示されたことから「縦と横が反転して、横向きに画像がアップされる」という現象が発生します。

Way to fix (修正内容)

修正内容を記入


関連するチケット

コピー先 OpenPNE 3 - Backport(バックポート) #3562: スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある Fixed(完了) 2014-02-21
コピー先 OpenPNE 3 - Backport(バックポート) #3564: スマートフォンで画像をアップロードすると画像が横向きになってしまう場合がある Fixed(完了) 2014-02-21

関係しているリビジョン

リビジョン 5d3ca7b9
Yuya Watanabe約10年前に追加

Merge remote-tracking branch 'origin/pr/107' (fixes #3560)

履歴

#1 Mutsumi Imamura約10年前に更新

  • 説明 を更新 (diff)
  • 3.6 で発生するかUnknown (未調査) から Yes (はい) に変更
  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

#2 Mutsumi Imamura約10年前に更新

#3 Mutsumi Imamura約10年前に更新

#4 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

https://github.com/openpne/OpenPNE3/pull/103

#5 Yuya Watanabe約10年前に更新

  • ステータスNew(新規) から Pending Fixing(修正待ち) に変更

修正コミットが見当たらないです.

#6 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

#7 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

#8 Yuya Watanabe約10年前に更新

  • ステータスPending Fixing(修正待ち) から Accepted(着手) に変更

#9 Yuya Watanabe約10年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

#10 Yuya Watanabe約10年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

フィードバック

すべて save() メソッドの中に記述されていますが,この辺りは「Orientation にしたがって画像を回転する」という明確な目的の一連の流れが存在するため,名前付けしてメソッドとして抽出してもらったほうがよいです.

メソッド抽出の具体的なメリットは リファクタリングという書籍の 「Extract Method(メソッドの抽出)」の項目が参考になります.

本チケットにおけるメソッド抽出の利点としては #3561 の修正と同時にマージする際に save() 内でのコンフリクトの解消時に ロジック記述部分を気にしたマージを行う必要が生じるものを,メソッド抽出後は save() 内ではメソッドの追加のみで対応できるというようなことがあります.

実際にマージを行う場合では画像変更処理はまとめておいたほうがよいと思われるためメソッドに抽出した処理については共通化する可能性はありますが,処理単位でまとまっているほうが共通化なども行いやすくなります.

#11 Mutsumi Imamura約10年前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

https://github.com/openpne/OpenPNE3/pull/107 でプルリクエストが来ています

#12 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)

#14 Yuya Watanabe約10年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更
  • 進捗率50 から 0 に変更

#15 Yuya Watanabe約10年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

#16 Yuya Watanabe約10年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

対応有難うございました.大丈夫と思うためマージします.

#17 Yuya Watanabe約10年前に更新

ちなみにコミットメッセージが 二つのコミットで全く同じとなっていますが,まあ大丈夫とします.
修正内容としては note-12 の 3 つとなるためコミットもそれぞれの目的に合わせてコミットメッセージを変更し,わかりやすいコミットであるほうが望ましいと思います.ここではまあ大丈夫とします.

#18 Akihiro KOBAYASHI約10年前に更新

@nabe 了解です。以後気をつけます。ただ、#3561も二つのコミットで全く同じとなっていると思うので・・・・・・そこはお許しください

#19 Yuya Watanabe約10年前に更新

5d3ca7b953f42e04462aefeede9862233904410a で master にマージしました.

#20 Yuya Watanabe約10年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
  • 進捗率70 から 50 に変更

更新履歴 5d3ca7b953f42e04462aefeede9862233904410a で適用されました。

#21 Mutsumi Imamura約10年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビュー待ちに戻ってしまっているのでステータス変更します。

#23 kaoru n約7年前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.11 にて対応済みであったため、対応せずとします。

他の形式にエクスポート: Atom PDF