Terkadang, foto yang diupload langsung dari handphone atau perangkat mobile memiliki orientasi yang berbeda, orientasi ini berdasarkan data EXIF atau metadata dari image itu sendiri. Jika dilihat dari handphone, foto itu benar berdiri (portrait) tetapi saat diupload dan dimunculkan malah menjadi tidur (landscape). Lalu bagaimana caranya?
Bila menggunakan PHP, maka kita harus tau terlebih dahulu apakah fungsi membaca data EXIF sudah aktif atau belum di PHP. Namun, secara default di sistem operasi terakhir yang saya tahu, fitur ini secara otomatis sudah ada dan aktif di PHP. Jadi tinggal langsung menggunakan fungsi seperti dibawah ini:
function FixImageOrientation($filename) {
if (function_exists('exif_read_data')) {
$exif = exif_read_data($filename);
if($exif && isset($exif['Orientation'])) {
$orientation = $exif['Orientation'];
if($orientation != 1){
$img = imagecreatefromjpeg($filename);
$deg = 0;
switch ($orientation) {
case 3:
$deg = 180;
break;
case 6:
$deg = 270;
break;
case 8:
$deg = 90;
break;
}
if ($deg) {
$img = imagerotate($img, $deg, 0);
}
imagejpeg($img, $filename, 95); //angka 95 ini adalah kualitas gambar, maksimum bisa 100
}
}
}
}
Nah setelah itu, kita bisa panggil fungsi diatas untuk fixing gambar yang orientasinya tidak sesuai dengan cara
$image = "path dari image/ atau hasil upload";
FixImageOrientation($image);