ホームページ  >  記事  >  バックエンド開発  >  PHP は画像 (方向) の回転問題を処理します

PHP は画像 (方向) の回転問題を処理します

藏色散人
藏色散人転載
2019-04-24 13:23:593016ブラウズ

毎日の PHP 開発では、フロントエンドからアップロードされた画像を処理する必要があることがよくあります。最も簡単な方法は画像を保存することです。場合によっては、画像の圧縮やサムネイルの生成など、何らかの処理を実行する必要があります。

これらを言うのは簡単ですが、さらに厄介なのは、フロントエンドによってアップロードされた写真が、サーバーに転送された後に不可解に 90 度または 180 度回転される場合があることです。重要なのは、これらの写真はフロントエンドでは正常に表示されることがありますが、サーバーに転送された後に問題が発生するということです。フロントエンドの学生は、自分たちには責任がないと言いました。これはバックエンドの問題です。 .

これについては何もできません。自分で解決してください。

PHPexif には画像の回転を処理するための拡張機能があります。画像の回転の問題に対処するには、この拡張機能をインストールする必要があります。exif 拡張子は php_mbstring# に依存します。 ## 拡張機能があるため、インストールする必要があります。拡張機能は 2 つあります。

PHP は画像 (方向) の回転問題を処理しますPHP は画像 (方向) の回転問題を処理します

これら 2 つの拡張子が phpinfo に表示されれば問題ありません。

インストールされていない場合は、手動でインストールする必要があります。ここでは Linux でのインストール方法についてのみ説明します。WAMP は一般的に Windows で使用され、WAMP はワンクリックでインストールできます。

Linux では、インストールにソース コードを使用することをお勧めします

1. まず、拡張機能のソース コードをダウンロードします。公式 Web サイトからダウンロードできます。私は php7.2 を使用しています。ここからダウンロードできます。 :

リンク: https://pan.baidu.com/s/1VDeJVJ5yEZZyCp8l9pNMgA

抽出コード: d6b4

2. コンパイルしてインストールします

Enterソース コード ディレクトリ

/usr/local/php/bin/phpize コマンドを使用し、configure を生成します (php が /usr/local/php ディレクトリにインストールされていると仮定します)

使用 ./configure --with-php-config=/usr/local /php/bin/php-config コマンドは Makefile を生成します

make && make install コマンドを使用してコンパイルおよびインストールします

変更するにはphp.ini ファイル (/usr/local/php/etc ディレクトリまたは /etc/php/ ディレクトリにある可能性があります) で拡張子を見つけ、extension=mbstring および extension=exif の前にあるものを削除し、不足しているものを削除しますこれらの 2 つの文を追加し、extension=exif の前に extension=mbstring を追加して、保存して終了します

Apache または nginx を再起動し、phpinfo をチェックして、これら 2 つの拡張機能があるかどうかを確認します

##準備は次のとおりです。 OK、コードの作成を開始できます。単純なロジック コードを記述するだけです。

$str = '文件路径';
        $savePath='保存路径';
        $image = imagecreatefromstring(file_get_contents($str));
        $exif = exif_read_data($str);

        if (!empty($exif['Orientation'])) {
            switch ($exif['Orientation']) {
                case 8:
                    $image = imagerotate($image, 90, 0);
                    break;
                case 3:
                    $image = imagerotate($image, 180, 0);
                    break;
                case 6:
                    $image = imagerotate($image, -90, 0);
                    break;
            }
            imagejpeg($image, $savePath);
            imagedestroy($image);
        }

Orientation 値は何を意味しますか? まだ見つかりません。見つけたら追加します。追加へようこそコメントエリア

あなたが遭遇した落とし穴について話してください

画像情報を入手してください。php7 より前では exif_imagetype() 関数を使用し、php7 以降では exif_read_data() を使用してください。 function

画像情報を取得するには、配列に Orientation フィールドがあるかどうかを必ず確認してください。多くの画像にはこの属性がないか、属性が空であるため、判断する必要があります。

以上がPHP は画像 (方向) の回転問題を処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はaliyun.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。