18

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

ユーザーが写真をアップロードできるphpサイトを作成しました。小さいサイズに縮小する前に、適切に縮小するために画像がどのように方向付けられているかを知りたいと思います。

ご回答有難うございます!

4

6 に答える 6

49

私はいつもこれをしました:

list($width, $height) = getimagesize('image.jpg');
if ($width > $height) {
    // Landscape
} else {
    // Portrait or Square
}
于 2012-11-26T16:04:08.440 に答える
9
list($width, $height) = getimagesize("path/to/your/image.jpg");

if( $width > $height)
    $orientation = "landscape";
else
    $orientation = "portrait";
于 2012-11-26T16:05:32.937 に答える
2

画像の幅が横向きの長さよりも長いかどうか、縦向きの場合は長さが幅よりも長いかどうかを確認できると思います。

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

次の関数を使用することもできます。Imagick::getImageOrientation

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

于 2012-11-26T16:00:48.217 に答える
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));
}
于 2012-11-26T16:00:34.030 に答える
0

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

   function calculateSize($width, $height){

            if($width <= maxSize && $height <= maxSize){
                $ratio = 1;
            } else if ($width > maxSize){
                $ratio = maxSize/$width;
                } else{
                    $ratio = maxSize/$height;
                    }

        $thumbwidth =  ($width * $ratio);
        $thumbheight = ($height * $ratio);
        }

ここで、最大サイズは、高さと幅の両方で120pxのようなものに初期化したものです。。。サムネイルがそのサイズを超えないようにします。。..

これは、横向きや縦向きに関係なく、一般的に適用できる私にとってはうまくいきます

于 2012-11-26T16:03:38.817 に答える
0

私はこの速記を使用しています。誰かが1行のソリューションを必要とする場合に備えて共有します。

$orientation = ( $width != $height ? ( $width > $height ? 'landscape' : 'portrait' ) : 'square' );

まず、画像が1:1(正方形)でないかどうかを確認します。そうでない場合は、向き(横向き/縦向き)を決定します。

誰かがこれがお役に立てば幸いです。

于 2020-05-29T10:07:07.093 に答える