2016-11-25 5 views
-1

通常、幅>高さの画像は横長で、幅は<高さは縦です。Android - 同じ情報を持つ画像で風景や肖像画を決定

しかし、私のサムスンギャラクシーS6の画像のW:H(デフォルトではカメラアプリで撮影されています)は、肖像画でも常に風景です。

横長画像と縦長画像の両方の情報が5312 x 2988です。縦長は2988 x 5312でなければなりませんが、5312 x 2988も表示されます。

私のコードへの入力は常にイメージを風景として認識します。

ギャラリーにポートレート画像が正しく表示されるため、他の方法で確認する必要があります。画像のW:Hを使用すると、すべての画像が美しく表示されるはずです。

画像内に他に使用できる情報はありますか?あなたの時間をありがとう。

答えて

0

画像は、ほぼすべてのデバイスで横長モードで撮影されるため、横長モードと縦長モードで表示される画像は同じサイズになります。

getResources().getConfiguration().orientation 

をして

onConfighanges(Configuration newConfig) 

see this link

+0

ありがとうございました!しかし、いくつかのデバイスで同じサイズが表示され、電話機がポートレートモードまたはランドスケープモードのときに画像を撮影するかどうかは関係ありません。これは画像のサイズで、現在の携帯電話の状態ではありません(あなたはポートレートモードで写真を撮ることができますが、風景モードで画像を取り込むコードを使用します - 写真はポートレートとして検出されなければなりません)、 'getResources .getConfiguration()。orientation'は電話の状態を取得します)。 –

0

内向きの変更は、私が問題の回避策を見つけたときにコールバックを取得:

次のコードによって、デバイスの向きを確認することができます。これは100%動作しないかもしれませんが、おそらくそれは役に立ちます。

私はこのようなExifInterface.TAG_ORIENTATIONをチェックするExifInterfaceを使用して終了:

ExifInterface exifi = new ExifInterface(originalAvatarPath.getPath()); 
       int ori = Integer.parseInt(exifi.getAttribute(ExifInterface.TAG_ORIENTATION)); 

それはhere

に記述されていないすべての画像意志が含まれているExifInterface.ORIENTATION_ROTATE_180またはExifInterface.ORIENTATION_ROTATE_90のような値に等しい場合は、oriを比較Exif情報、それは私のために働く。

希望します。

関連する問題