2012-11-26 9 views
12

PHPでイメージ(JPEGまたはPNG)のイメージの向き(横または縦)を取得するにはどうすればよいですか?PHPでイメージの方向を取得する

私はユーザーが画像をアップロードできるPHPサイトを作成しました。サイズを小さくする前に、画像を適切に拡大するために画像の向きを知りたいと思います。

ありがとうございました!

+1

http://php.net /manual/ja/imagick.getimageorientation.php –

+0

これはjpg/png仕様の一部ではありません。それらはピクセルのグリッドです。あなたは、画像が身長よりも広いかどうかを確認することができますが、あまり意味はありません。 EXIFデータには方向付けデータが含まれています。 –

答えて

29

私はいつもこれをやった適用することができる作品を私のため

list($width, $height) = getimagesize('image.jpg'); 
if ($width > $height) { 
    // Landscape 
} else { 
    // Portrait or Square 
} 
0

シンプルです。幅と高さを確認し、それらを比較して向きを取得してください。それに応じてサイズを変更します。本当にまっすぐ進む。あなたには、いくつかの正方形の箱の中に縦横比を維持するが、合うようにしようとしている場合は、このようなものを使用することができます

public static function fit_box($box = 200, $x = 100, $y = 100) 
{ 
    $scale = min($box/$x, $box/$y, 1); 
    return array(round($x * $scale, 0), round($y * $scale, 0)); 
} 
1

を私は画像の幅は、景観のためとあれば肖像画のための長さよりも長い場合、あなたがチェックできると仮定します長さは幅よりも長い。

簡単なIF/ELSEステートメントでこれを行うことができます。

また、機能を使用できます。Imagick::getImageOrientation

http://php.net/manual/en/imagick.getimageorientation.php

0

私は一般のようなアルゴリズムをスケールダウン使用します。 ..

ここで、最大サイズは高さと幅の両方について120pxのように初期化されたものです。 。 。そのサムネイルがそのサイズを超えないようにする。 。 。これは、横または縦向きにかかわらず、であると一般的に

6
list($width, $height) = getimagesize("path/to/your/image.jpg"); 

if($width > $height) 
    $orientation = "landscape"; 
else 
    $orientation = "portrait"; 
関連する問題