開発プロセス中に、ユーザーによってアップロードされた画像をサーバーに保存する必要があることがよくあります。写真が携帯電話または他の写真撮影デバイスを介してアップロードされている場合、方向の逸脱の問題があるかもしれません。ほとんどのデバイスは、画像のexifメタデータに回転方向を記録するため、画像を保存するときにこの情報を一緒に処理する必要があります。
まず、リモート画像URLを介して画像をローカルにダウンロードして保存する必要があります。 phpのfile_get_contents()とfile_put_contents()を使用して実装できます。
$url = 'リモート画像URL';
$image = file_get_contents($url);
// ファイル名とパスを保存します
$filename = '保存されたファイル名.jpg';
$save_path = '保存されたパス';
file_put_contents($save_path . $filename, $image);
画像の方向情報は、通常、特にJPEG形式の写真にexifメタデータに保存されます。この情報を読むには、PHPのexif_read_data()関数を使用できます。
// 合格 Exif 回転方向を取得するために拡張します
$exif = exif_read_data($save_path . $filename);
if (!empty($exif['Orientation'])) {
// 回転方向に応じた処理
switch ($exif['Orientation']) {
case 3:
// 回転します180度
$image = imagerotate($image, 180, 0);
break;
case 6:
// 顺时针回転します90度
$image = imagerotate($image, -90, 0);
break;
case 8:
// 逆时针回転します90度
$image = imagerotate($image, 90, 0);
break;
}
}
// 保存回転します后的图片
file_put_contents($save_path . $filename, $image);
上記のコードは、Exifで方向フィールドを使用して、その値に基づいて画像を回転させる必要があるかどうかを判断します。必要に応じて、処理にImagERotate()関数を使用します。ただし、次のことに注意してください。
上記の方法を通して、開発者は、リモートの写真を保存しながら、画像の方向の問題を自動的に識別して修正し、画像ディスプレイの精度とユーザーエクスペリエンスを向上させることができます。これは、画像処理システムの構築やモバイル画像アップロードインターフェイスなどのシナリオで特に重要です。